unity3d利用sharesdk分享内容至微信、新浪微博、qq空间等国内主流社交平台(ios篇)

大家在玩游戏时,通常都会看到分享的功能,最常见的是分享到微信朋友圈、qq空间或者新浪微博,产品经理通常称这个功能模块为社会化。那这个功能在unity3d制作的游戏中怎么做到的呢?以前的老做法是按照对应的ios、安卓平台、在微信or新浪微博上下载对应的sdk、按照其说明文档逐一接入,费时费力,而且多数都不支持u3d,需要自己写接口,令广大程序苦不堪言。如果能拥有一个集成化的,并且支持u3d分享的sdk,仅需让我们接入一次,而不必多次重复操作,那定是一件愉快的事。ShareSDK——目前,我使用过的这款集成型社会化组件还不错,关键是免费。下面就其具体使用方式简单做下介绍。考虑不周之处还望指正。不再闲话,进入正题。

这里我们先以unity3d分享到ios微信、微博、qq空间为例:

1、首先到其官网下载unity3d对应的sdk,下载地址:http://sharesdk.mob.com/Download,下载完毕解压,导入unity工程中,根据需要导入对应的平台,全部导入也无妨,这里选择导入ios:

unity3d利用sharesdk分享内容至微信、新浪微博、qq空间等国内主流社交平台(ios篇)_第1张图片unity3d利用sharesdk分享内容至微信、新浪微博、qq空间等国内主流社交平台(ios篇)_第2张图片unity3d利用sharesdk分享内容至微信、新浪微博、qq空间等国内主流社交平台(ios篇)_第3张图片


2、导入到项目中后,会在Assets文件夹下多出以下文件(如果你之前已经存在某些同名文件夹,会做合并处理)。将里面的ShareSDk脚本挂载到主摄像机上。

unity3d利用sharesdk分享内容至微信、新浪微博、qq空间等国内主流社交平台(ios篇)_第4张图片

当然这里也可以不必非得挂在摄像机上。例如我们的游戏就挂在全局存在的Main对象上。如果挂在非MainCamera对象上,记得修改ShareSDK.cs中对象名称:

unity3d利用sharesdk分享内容至微信、新浪微博、qq空间等国内主流社交平台(ios篇)_第5张图片

以上u3d的sdk导入工作完毕。接下来开始在u3d内编码调用函数:

3、新建脚本,简单写几个button测试。或者使用Demo中给定的Demo.cs类文件,这个脚本也要挂在摄像机上。demo运行可看到以下效果。

unity3d利用sharesdk分享内容至微信、新浪微博、qq空间等国内主流社交平台(ios篇)_第6张图片

当然也可以不必新建脚本,只需在合适位置调用分享的代码即可,下面4、就其代码向大家提醒几点需要注意的地方。

首先start函数中调用以下两个方法,第一个为回调对象,就是你挂脚本的对象名称,默认为:MainCamera,第二个是打开专属你的应用名称,这个appkey需要在sharesdk官网上注册。

unity3d利用sharesdk分享内容至微信、新浪微博、qq空间等国内主流社交平台(ios篇)_第7张图片

 

appkey注册地址:http://dashboard.mob.com/#/,拿到appkey,补充一下,如果这里不修改,默认使用api20,就会出现分享完毕后,内容下面显示”来自sharesdk“的后缀。如果修改为自己的appkey,那就会显示来自你在该网站上注册的应用名字。

unity3d利用sharesdk分享内容至微信、新浪微博、qq空间等国内主流社交平台(ios篇)_第8张图片

5、注册各种appkey等值。我们要分享到哪个社交平台,还需要在对应的平台上注册app_key、app_secret、以及回调地址redirect_uri,这些平台注册方式基本类似,大同小异。例如我们这里分享到微信、新浪微博,就需分别拿到对应平台的app_key、app_secret、redirect_uri。


微信,需要到微信开放平台,地址:https://open.weixin.qq.com/(注意不是腾讯开放平台、qq空间需要到腾讯开放平台)先注册成为开发者、再接着创建应用,填写基本应用信息,等待审核,最长7天,一般1个工作日。里面有需要填写appstore下载地址,如果应用没有上线,这里可以填写预判的appstore地址(预判地址在appstore后台——“更多”——“在Appstore中查看”  mac上itunes里面查看)。最终得到以下信息即可:

unity3d利用sharesdk分享内容至微信、新浪微博、qq空间等国内主流社交平台(ios篇)_第9张图片unity3d利用sharesdk分享内容至微信、新浪微博、qq空间等国内主流社交平台(ios篇)_第10张图片

 

新浪微博同理,地址:https://open.weixin.qq.com/。需要到新浪开放平台注册、申请成为开发者、创建应用、填写应用详情、初步审核(审核中有张截图必须含有新浪分享标志,否则不通过)、下载地址填写上面的预判地址。注册得到appkey等,如果你的应用还没有上线,那就意味着下载地址是不可用的。你申请的appkey可以暂用,分享时会出现界面,但是分享不成功,报错大约就是没有审核成功云云。这个不用担心,等到真正应用上架,就可以正常分享。就是说,代码事先可以写好,只要ios审核过了,并且发布。我们就能马上在新浪进行二次审核,上架广场。分享也随之正常,不再报错。

unity3d利用sharesdk分享内容至微信、新浪微博、qq空间等国内主流社交平台(ios篇)_第11张图片unity3d利用sharesdk分享内容至微信、新浪微博、qq空间等国内主流社交平台(ios篇)_第12张图片

 

QQ空间类似,地址:http://open.qq.com/apps/dev。同样需要注册开发者、创建应用、填写应用资料、最终得到appkey等信息。

6、以上是分享对应平台所必备的值,申请完毕后,写入代码内。每个平台需要的值不完全相同,够用就好。下图中从上至下,依次新浪、qq空间、微信。如果需要添加其他分享、例如海外的facebook、twitter等等,按照它demo里面代码即可。

unity3d利用sharesdk分享内容至微信、新浪微博、qq空间等国内主流社交平台(ios篇)_第13张图片

7、下面是分享内容的设置。分享内容在这里设置,包括文字、图片、链接。其中图片可以是网络图片,但还需要审核过才能实际展示出来。也可以是本地图片,ios图片放在 StreamingAssets只读文件夹下面,写入下面的代码。content["image"] = Application.streamingAssetsPath+”/pic.png”;

安卓得放在sdcard中才可以,需要在分享前把u3d里的图片拷贝到sdcard卡里面,这也是我看有其他前辈这么摸索出来的。在Resources文件夹下放一个图片,记住一定要PNG,在U3D里面把图片的格式修改成RGBA

 

//读、写的路径        

string imagePath = Application.persistentDataPath + "/pic.png";

//如果文件不存在,把它拷贝进去。

if(!System.IO.File.Exists(imagePath))

{

       Texture2D o =  Resources.Load("pic ") as Texture2D;

       System.IO.File.WriteAllBytes(imagePath, o.EncodeToPNG());

}

 这样在分享图片的时候

 

//image的路径就可以直接写了。             

string imagePath = Application.persistentDataPath + "/ pic.png";

if(System.IO.File.Exists(imagePath))

{

       content["image"] = imagePath;

}

 如果你想分享的是一张截屏图片,路径这样来写

 

Application.CaptureScreenshot("screen.png");

content["image"] =     Application.persistentDataPath + "/screen.png";

unity3d利用sharesdk分享内容至微信、新浪微博、qq空间等国内主流社交平台(ios篇)_第14张图片

 

8、如果遇到微信分享因为权限失败,看是否你有写了这些,请删除这里,可能是因为要获得朋友圈信息权限不足,导致分享失败。

unity3d利用sharesdk分享内容至微信、新浪微博、qq空间等国内主流社交平台(ios篇)_第15张图片

 

9、至此,我们完成了在unity当中的工作。接下来,我们要发布到安卓或者ios平台,还需要继续进行下面的工作。

10、分享到ios平台:———————————————————————

首先到sharesdk官网下载iossdk,地址:http://sharesdk.mob.com/Download

unity3d利用sharesdk分享内容至微信、新浪微博、qq空间等国内主流社交平台(ios篇)_第16张图片unity3d利用sharesdk分享内容至微信、新浪微博、qq空间等国内主流社交平台(ios篇)_第17张图片

在上方选中你要分享的平台,其余勾掉,下面选择适合自己的分享弹窗的ui

11、下载完毕需要在mac上解压,解压出的文件待用,接下来的工作将在mac中xcode中进行。

12、如果你在windows上,你需要u3d导出ios工程,拷贝至mac上,利用xcode打开工程。

 unity3d利用sharesdk分享内容至微信、新浪微博、qq空间等国内主流社交平台(ios篇)_第18张图片

13、xcode打开导出的u3d工程,将刚才解压的名为sharesdk的文件夹直接拖到打开的工程下,注意勾选copy,如图:

 unity3d利用sharesdk分享内容至微信、新浪微博、qq空间等国内主流社交平台(ios篇)_第19张图片

14、导入完毕之后,可以在左侧看到其目录结构,如果想删除可去源文件夹下删除即可。

 unity3d利用sharesdk分享内容至微信、新浪微博、qq空间等国内主流社交平台(ios篇)_第20张图片

15、添加依赖项,可能你有做了其他接入,有些依赖项会发生重复,去掉重复,仅需一个即可。

 unity3d利用sharesdk分享内容至微信、新浪微博、qq空间等国内主流社交平台(ios篇)_第21张图片

16、微信分享还需要进一步配置,打开unityappcontroller.mm文件。加入头文件sharesdk/sharesdk.h,讲以下代码替换至截图位置。

- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL*)url

{

    return [ShareSDKhandleOpenURL:url wxDelegate:nil];

}

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)urlsourceApplication:(NSString *)sourceApplication annotation:(id)annotation

{

    return [ShareSDKhandleOpenURL:url sourceApplication:sourceApplication annotation:annotationwxDelegate:nil];

}替换以下代码。否则无法弹出分享界面。

unity3d利用sharesdk分享内容至微信、新浪微博、qq空间等国内主流社交平台(ios篇)_第22张图片

17、微信分享还需要在info处,添加url。分别填写程序包名、在微信平台申请的appkey。如图:

unity3d利用sharesdk分享内容至微信、新浪微博、qq空间等国内主流社交平台(ios篇)_第23张图片

18、在ShareSDKUnity3DBridge文件中,找到要分享的对应平台注释掉不需要的预编译文件。注意如果分享qq空间需要取消qq注释。其他用哪个放开即可


19、完全配置好后,编译运行。点击微博分享,会弹出分享内容,如果从未授权登陆,当点击发表会出现授权登陆界面。登陆一次后会记录登录状态。

微信分享,必须需要设备安装微信才能分享。安装微信后会跳转授权登陆界面。

如果有异常,注意查看xcode里面报出的log。

微信如果出现不弹窗,请注意是否url配对、代码是否替换、微信是否安装。

微信分享遇到权限问题,注意删掉前文说的几句代码。

弹窗异常,注意选择对应ui下载。

新浪必须等ios应用上线才能分享成功,否则登录进入大约显示未审核广场云云。

至此,unity3d分享ios微信、新浪微博、qq空间就此结束。如有问题,敬请指正。

微信分享效果:

unity3d利用sharesdk分享内容至微信、新浪微博、qq空间等国内主流社交平台(ios篇)_第24张图片


新浪微博效果:

unity3d利用sharesdk分享内容至微信、新浪微博、qq空间等国内主流社交平台(ios篇)_第25张图片


另外有分享的安卓篇。以及Facebook、twitter等我将在后续有时间补上。


你可能感兴趣的:(unity3d)