> >

ShareSDK iOS for ANE

注意:ShareSDK  iOS 有分 2.X 与 3.x 的版本

-本教程为使用3.x版本的集成文档(若要参考使用iOS 2.x 版本的集成文档 ,请看这里

一、集成步骤

1、下载ShareSDK 的 ANE 组件

请到GitHub 上 下载  New-ANE-For-ShareSDK  开源项目

2、添加ANE组件到项目中

打开自己的FlashBuilder项目,右键点击要集成SDK的项目,选择“属性”。在弹出的窗口里面选择“ActionScript构建路径“ -> “本机扩展”。点击添加ANE,然后选择ANESample目录/package/ShareSDK.ane。

1

然后选择“ActionScript构建打包” -> “Apple iOS“。在弹出对话框中选择“本机扩展”。把添加的ANE打上勾,如图:

2

3、复制ShareSDK.bundle、ShareSDKUI.bundle及第三方SDK等资源 文件

下载iOS版本ShareSDK v3.x,然后把ShareSDK/Support/Required文件夹中ShareSDK.bundle、ShareSDK/Support/Optional ShareSDKUI.bundle放入AIR项目src目录文件夹下。除此以外,如果需要特定平台且该平台有需要使用到其自身的SDK,还需要把该SDK里面的bundle和.a文件都放到src文件夹中,如果没有bundle或.a文件则不需要。

4、配置URL Schemes

对于使用SSO、微信分享、QQ等分享,需要配置URL Schemes。打开XXXX-app.xml(XXXX表示项目名称)配置文件。找到<iPhone><InfoAdditions>节点下添加URL Schemes的配置,如添加新浪微博:

3

5、对于iOS9以上所需要的配置

对于iOS9.0以上的设备,需要配置白名单和设置允许的域进行http访问或完全允许http访问。这同样是需要在XXXX-app.xml(XXXX表示项目名称)配置文件中进行配置。

配置白名单需要添加LSApplicationQueriesSchemes,配置完全允许http网络请求需添加NSAppTransportSecurity,

示例图如下:

D469096D-E1A7-412D-806C-25F8E7C8DE4F

另外如果需要仅单独允许部分域名访问http,可以通过Xcode查看ShareSDK iOS Demo,找到其中info.plist文件,并查看其源码即可复制到xxx-app.xml文件并自行修改。

二、代码配置

1、引入命名空间

 import cn.sharesdk.ane.PlatformID;
 import cn.sharesdk.ane.ShareSDKExtension;
 import cn.sharesdk.ane.ShareType;

2、实例化“ShareSDKExtension”

 private var shareSDK:ShareSDKExtension = new ShareSDKExtension();

3、配置平台信息

(1)、先设一个总 Object

(2)、定制所需要的平台配置信息(相关函数方法请查看ANE包)

(3)、调用initSDK方法将AppKey(在mob.com官网申请获得)传入,调用setPlatformConfig方法将配置信息传入

(4)、 调用“ShareSDKExtension.setPlatformActionListener”方法设置操作回调

举个栗子:

var totalConf:Object = new Object();

var sinaConf:SinaWeibo = new SinaWeibo();
    sinaConf.setAppKey("568898243");
    sinaConf.setAppSecret("38a4f8204cc784f81f9f0daaf31e02e3");
    sinaConf.setRedirectUrl("http://www.sharesdk.cn");
    sinaConf.setAuthType("both"); //iOS需要,可填入web、sso 或 both	
    totalConf[PlatformID.SinaWeibo] = sinaConf.getPlatformConf();

var tencentConf:TencentWeibo = new TencentWeibo();
    tencentConf.setAppKey("801307650");
    tencentConf.setAppSecret("ae36f4ee3946e1cbb98d6965b0b2ff5c");
    tencentConf.setRedirectUri("http://www.sharesdk.cn");
    totalConf[PlatformID.TencentWeibo] = tencentConf.getPlatformConf();

shareSDK.initSDK("6c7d91b85e4b");  
shareSDK.setPlatformConfig(totalConf);
shareSDK.setPlatformActionListener(onComplete, onError, onCancel);

 

4、配置回调方法onComplete,onError,onCancel,是Function类型,分别如下:

 public function onComplete(reqId:int, platform:int,   action:String, res:Object):void
 {
 	var json:String = (res == null ? "" :    JSON.stringify(res));
	var message:String = "onComplete\nPlatform=" +    platform + ", action=" + action + "\nres=" + json + "\n reqId=" + reqId;
	shareSDK.toast(message);
 }		
 public function onCancel(reqId:int, platform:int, action:String):void 
 {
	var message:String = "onCancel\nPlatform=" + platform + ", action=" + action + "\n reqId=" + reqId;
	shareSDK.toast(message);
 }		
 public function onError(reqId:int, platform:int, action:String, err:Object):void 
 {
	var json:String = (err == null ? "" : JSON.stringify(err));
	var message:String = "onError\nPlatform=" + platform + ", action=" + action + "\nres=" + json + "\n reqId=" + reqId;
	shareSDK.toast(message);
 }

 

三、进行授权、分享

1、授权

shareSDK.authorize(PlatformID.SinaWeibo)

2、获取用户信息

shareSDK.getUserInfo(PlatformID.TencentWeibo);

 3、分享

//构建分享内容
var shareParams:ShareContent = new ShareContent();

//配置基本分享内容
shareParams.setText("ShareSDK 3.0 for ANE Text");
shareParams.setTitle("ShareSDK 3.0 for ANE Title");
shareParams.setUrl("http://mob.com");
shareParams.setImagePath("http://f1.sharesdk.cn/imgs/2014/02/26/owWpLZo_638x960.jpg");
shareParams.setShareType(ShareType.SSDKContentTypeImage)

//定制指定平台的分享内容(可选)	
var sinaParams:ShareContent = new ShareContent();
sinaParams.setText("SinaWeibo Text");
var file:File = File.applicationDirectory.resolvePath("mac.jpeg");
sinaParams.setImagePath(file.nativePath);
sinaParams.setShareType(ShareType.SSDKContentTypeImage)
shareParams.setShareContentCustomize(PlatformID.SinaWeibo, sinaParams);

//自定义菜单数组(可选)
var shareList:Array = new Array(PlatformID.SinaWeibo,PlatformID.WeChat);

//通过分享菜单分享					
shareSDK.showPlatformList(null, shareParams, 320, 460);

更多分享方法用法请直接参考ANEDemo

四、自定义ANE组件(iOS,可选)

在下载的项目中,名为iOS文件夹里面包含有Xcode项目ShareSDKForANE。打开该项目在其中的ShareSDKForANE.m文件就是桥接ANE的原生OC代码。(该Xcode项目需要依赖ShareSDK iOS V3.x,对该项目添加ShareSDK的教程请看这里

1、在ShareSDKForANE.m头文件处有多个宏,对于不需要的平台可以将宏注释,ShareSDK下的 Support / PlatformSDK 文件夹下 也可以删除相应的第三方SDK。

 #define __SHARESDK_SINA_WEIBO__
 #define __SHARESDK_WECHAT__
 #define __SHARESDK_QQ__
 //#define __SHARESDK_RENREN__
 //#define __SHARESDK_YIXIN__

2、当确认ShareSDKForANE.m修改完成后,直接对模拟器和真机下各Build一次,在项目的Bulid文件中能够获得模拟器和设备两种的libShareSDKForANE.a文件。分别将该.a文件覆盖ANESample/package中iPhone-ARM和iPhone-x86里面的.a文件(真机对应ARM,模拟器对应x86)。

3、然后将Xcode项目中所使用的ShareSDK文件夹各复制一份到iPhone-ARM和iPhone-x86文件夹里面,并将刚复制过来的ShareSDK里面的所有bundle和.a文件删除,包括PlatformSDK文件夹里面的bundle和.a(做到这里的时候相信您已经在第一步的第3小点里面已经把要用到的bundle和.a文件复制到您的ANE项目里面去了:-))

C3922183-AF03-4871-B114-9ED52F19D3B4

4、然后打开ANESample/package/platformoptions.xml,把不需要的平台的framework的路径删除。

5、最后使用终端到达ANESample/package/目录下,执行指令  $sh ane.sh 即可生成新的ane组件。