【单目全景相机】友盟分享功能的集成
2016.09.16
由于本人认知有限,如有错漏,非常欢迎同行指正交流。
QQ:454186694
为什么要继承友盟分享?
很多时候,我们的应用需要分享文字、图片或者视频等媒体信息到其他的平台,比如微信、QQ、新浪微博、国外的facebook、youtube、twitter、instagram等。如果一个一个的继承,需要在不同平台的开发者网站上找到相应的SDK接入,这样的话,工作量是巨大的,所以有些第三方的SDK就继承了各大平台的分享的SDK,然后提供统一的接口供开发人员使用,这样就大大减少了开发人员的工作量,是一件极其有意义的事情。这样的第三方社会化分享SDK有哪些呢?比较突出的就是友盟SDK和shareSDK了。XDV360单目全景相机应用,在这里选择使用的是友盟SDK。
友盟社会化分享
进入友盟社会化分享的网页,可以看到支持Android、IOS、Windows等平台,这里我们的应用分享功能是在Android版和IOS版上,所以进入下载到SDK,里面也会有详细的文档介绍如何继承和使用,这里我分Android和IOS两部分来介绍最基本的继承步骤。
分享效果
当我们点击预览图片的时候,顶部就有一个链接按钮,点击弹出分享对话框,可以选择不同平台,然后拉起相关应用分享媒体文件:
Android社会化分享继承
注册友盟AppKey:
如果需要使用友盟的社会化分享功能呢,首先必须要注册友盟,获取到AppKey,后面需要集成到应用代码里面去。下载并安装SDK:
下载SDK最新版,下载的时候记得选上√SDK工程引用:以工程引用的方式导入eclipse,来添加资源文件和jar文件;
解压之后,将social_sdk_library_project/libs拷贝到Assets/Plugins/Android/libs;将social_sdk_library_project/res拷贝到Assets/Plugins/Android/res;
至此,安装完成。配置AndroidManifest:
每个Android应用程序都需要一个启动的Activity。也就是在手机里你点了一个游戏的icon这时候打开游戏,弹出的第一个Activity。
a. 增加一个Activity并设置友盟AppKey:
b. 添加对微信、QQ、QQ空间的支持:
c. 添加对Facebook的支持:
还需要修改Assets\Plugins\Android\res\values\strings.xml的值为Facebook的AppID:
在全局代码或入口处,初始化各平台的支持:
代码里面添加真正调用分享的接口:
这里用到了Unity3D中C#调用jar的技术,可以再Unity3D官方找到文档。具体就是AndroidJavaClass和AndroidJavaObject两个类的使用。
至此,应用集成Android的友盟SDK,代码部分添加完成,剩下的就是UI部分和代码关联的工作了。
IOS社会化分享继承
Unity3D打包IOS平台,生成的其实是Xcode工程,如果想要实现一键打包出IOS的ipa包,可以参考雨松MOMO的教程Unity3D研究院之IOS全自动打包生成ipa。要实现一个功能,其实有很多办法,有的可以通过C#来做,有的可以通过Object-c来完成,我这里为了方便打包,都是选择的在C#上调用IOS静态库(友盟有提供,默认就在SDK里面)来实现的,所以你会发现和友盟官方提供的方法有区别,它是使用Object-c的方式,但大道同源、殊途同归。
注册友盟AppKey:
IOS的AppKey和Android的AppKey是不一样的,需要分别申请。下载并安装SDK:
把UMSocial_Sdk_5.0.1拷贝到Unity3D工程Assets\Plugins\iOS\UMSocial_Sdk_5.0.1下,把UMSocial_Sdk_Extra_Frameworks拷贝到Unity3D工程Assets\Plugins\iOS\UMSocial_Sdk_Extra_Frameworks下,这样在生成IOS Xcode工程的时候,默认就会继承进去。代码里面初始化友盟AppKey:
Social.setAppKey("5764aba9e0f55a6878003xxx");
Social是自己写的一个类,setAppKey是静态类,调用的是友盟IOS的.a静态库里面的方法:
[DllImport("__Internal")]
public static extern void setAppKey(string appKey);
在OnPostprocessBuild中实现打包后的处理:
Unity3D生成了Xcode工程之后,我们可以在OnPostprocessBuild中写代码实现其他功能,比如我们这里修改工程文件project.pbxproj,修改包名、增加Framework、增加一些库;修改info.plist,增加各平台的Url Scheme,才能实现跨应用分享,添加应用白名单;打开其他工程源码文件,修改到具体行等。这里我只针对分享功能,介绍需要修改的地方。
这里我使用到了Unity Cloud Build demo里面提供的一个开源类XcodeProjectUpdater.cs ,以及使用到了雨松MOMO在教程Unity3D研究院之IOS全自动编辑framework、plist、oc代码用到的类和方法。下面的图我只截了一部分,完整的类和方法,全部都可以在我上面提到的两个地方获取到。
a. 添加对各平台分享功能的URL Scheme支持:
b. 添加URL Scheme白名单:
c. 添加对Instagram的支持:
至此,应用集成IOS的友盟SDK,代码部分添加完成,UI部分关联做的好,可以和Android部分使用同一个方法,C#里面使用UNITY_IOS和UNITY_ANDROID来区分。