> >

ShareSDK iOS for JavaScript

注意→_→:目前ShareSDK for iOS有2个大版本:ShareSDK v3.x(新版)和ShareSKD v2.x(旧版),本教程是使用ShareSDK v3.x的集成文档。若需要ShareSDK v2.x,请参考旧版文档:网页链接

1、下载ShareSDK

ShareSDK iOS版本的 JavaScript 插件是在ShareSDK iOS版本基础上对接口做JS桥接,是依赖ShareSDK for iOS的。(目前不支持浏览器打开的web应用,只支持App内置的Web页面,这个web页可以自己在本地也就是项目里创建html文件,这个html文件也可以网上得到)。所以下载ShareSDK就包含了以下2部分,下载下来的文件目录截图如下:

6899637F-A697-4DC8-9F9C-B7B4B0871472
9D79F02A-1A38-4522-B1ED-16F96CC39031
  • 将以上2个红色方框内的文件拖到新建的项目中。

2、初始化ShareSDK并设置社交平台

(1)iOS 部分

    1)下载的ShareSDK文件拖进项目

 

注意:请务必在上述步骤中选择“Create groups for any added folders”单选按钮组。如果你选择“Create folder references for any added folders”,一个蓝色的文件夹引用将被添加到项目并且将无法找到它的资源。

7C55F1FF-3922-4208-AA5C-4E549564390E

    2)添加必须的依赖库

必须添加的依赖库如下(Xcode 7 下 *.dylib库后缀名更改为*.tbd):
  • libicucore.dylib
  • libz.dylib
  • libstdc++.dylib
  • JavaScriptCore.framework
以下依赖库根据社交平台添加:
新浪微博SDK依赖库

  • ImageIO.framework
  • AdSupport.framework
  • libsqlite3.dylib
QQ好友和QQ空间SDK依赖库

  • libsqlite3.dylib
微信SDK依赖库

  • libsqlite3.dylib
短信和邮件需要依赖库

  • MessageUI.framework
Google+SDK依赖库

  • CoreMotion.framework
  • CoreLocation.framework
  • MediaPlayer.framework
  • AssetsLibrary.framework
  • AddressBook.framework

     添加依赖库的方法如下:

233D16A0-E241-4D4B-ACF2-4C03259F995A

    3)各个社交平台需要的配置(url schemes 等)可以参考文档中的可选配置项:网页链接

 

    4)为UIWebView添加消息捕获

   a、在实现 UIWebView 控件的 ViewController 中导入 ShareSDK 头文件并挂载 UIWebViewDelegate
 #import "ShareSDKJSBridge.h"

 @interface ViewController ()<UIWebViewDelegate>
 {
    @private
     ShareSDKJSBridge *_bridge;
 }
 //...
 @end
  b、给UIWebView设置一个委托对象,如:(注意:webView是UIWebView的对象实例。)
 // ...
 webView.delegate = self;
  c、实现shouldStartLoadWithRequest委托方法,并在方法中加入JSBridge的captureRequest方法,代码如下:
 #pragma mark - UIWebViewDelegate
 - (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequ est *)request navigationType:(UIWebViewNavigationType)navigationType
 {
     return ![[ShareSDKJSBridge sharedBridge] captureRequest:request webVie w:webView];
 }

 

(2)html 部分

    1)选择需要平台的SDK

打开JSApi / iOS / ShareSDKJSBridge.m,按需注释掉已导入的原生SDK库,ShareSDK的 libraries / extends 也可以删除相应的不需要的第三方SDK。

#define IMPORT_SINA_WEIBO_LIB               //导入新浪微博库,如果不需要新浪微博客户端分享可以注释此行
#define IMPORT_QZONE_QQ_LIB                 //导入腾讯开发平台库,如果不需要QQ空间分享、SSO或者QQ好友分享可以注释此行
#define IMPORT_RENREN_LIB                   //导入人人库,如果不需要人人SSO,可以注释此行
#define IMPORT_GOOGLE_PLUS_LIB              //导入Google+库,如果不需要Google+分享可以注释此行
#define IMPORT_WECHAT_LIB                   //导入微信库,如果不需要微信分享可以注释此行
#define IMPORT_ALIPAY_LIB                   //导入支付宝分享库,如果不需要支付宝分享可以注释此行
#define IMPORT_KAKAO_LIB                    //导入Kakao库,如果不需要KaKao分享可以注释此行

 

   2) 在html 页中添加 JS 文件引用:

   <script src="ShareSDK.js"></script>

   3)添加初始化代码:

function init()
  {
        //1、配置平台信息,有开放平台账号系统的平台需要自行去申请账号
        var platformConfig = {};

        //以下是示例
        //新浪微博
        var sinaConf = {};
        sinaConf["app_key"] = "568898243";
        sinaConf["app_secret"] = "38a4f8204cc784f81f9f0daaf31e02e3";
        sinaConf["redirect_uri"] = "http://www.sharesdk.cn";
        platformConfig[$sharesdk.PlatformID.SinaWeibo] = sinaConf;

        //微信
        var weixinConf = {};
        weixinConf["app_id"] = "wx4868b35061f87885";
        weixinConf["app_secret"] = "64020361b8ec4c99936c0e3999a9f249";
        platformConfig[$sharesdk.PlatformID.WechatPlatform] = weixinConf;

        //QQ
        var qqConf = {};
        qqConf["app_id"] = "100371282";
        qqConf["app_key"] = "aed9b0303e3ed1e27bae87c33761161d";
        platformConfig[$sharesdk.PlatformID.QQPlatform] = qqConf;

        //腾讯微博
        var tencentWeiboConf = {};
        tencentWeiboConf["app_key"] = "801307650";
        tencentWeiboConf["app_secret"] = "ae36f4ee3946e1cbb98d6965b0b2ff5c";
        tencentWeiboConf["redirect_uri"] = "http://www.sharesdk.cn";
        platformConfig[$sharesdk.PlatformID.TencentWeibo] = tencentWeiboConf;

        //Facebook
        var facebookConf = {};
        facebookConf["api_key"] = "107704292745179";
        facebookConf["app_secret"] = "38053202e1a5fe26c80c753071f0b573";
        platformConfig[$sharesdk.PlatformID.Facebook] = facebookConf;

        //Twitter
        var twitterConf = {};
        twitterConf["consumer_key"] = "LRBM0H75rWrU9gNHvlEAA2aOy";
        twitterConf["consumer_secret"] = "gbeWsZvA9ELJSdoBzJ5oLKX0TU09UOwrzdGfo9Tg7DjyGuMe8G";
        twitterConf["redirect_uri"] = "http://mob.com";
        platformConfig[$sharesdk.PlatformID.Twitter] = twitterConf;

        //Mail
        var mailConf = {};
        platformConfig[$sharesdk.PlatformID.Mail] = mailConf;

        //2、初始化ShareSDK
        $sharesdk.initSDKAndSetPlatfromConfig("iosv1101", platformConfig);
}

 

以上平台的app_key、app_secret等字段不同分享平台可能不同,详情可参考:《统一表》。

3、ShareSDK接口的调用

(1)分享

    1)在需要分享操作的代码块中进行构造分享参数,示例如下:

  var params =
  {
      "text" : "测试的文字",  // 分享的文字
      "imageUrl" : "http://www.mob.com/mob/img/navproducts_03.png",  // 分享  的图片 Url
      "title" : "测试的标题",  /分享的标题
      "titleUrl" : "http://www.mob.com",
      "description" : "测试的描述",
      "site" : "ShareSDK",
      "siteUrl" : "http://www.mob.com",
      "type" : $sharesdk.ContentType.Text
  };

构造分享内容字段参数值请参考:《分享内容参数字段表》

    2)调用弹出分享菜单的方法:

  $sharesdk.showShareMenu(null, params, 100, 100, function (platform, state  , shareInfo, error) {
              alert("state = " + state + "\n shareInfo = " + shareInfo + "\  n error = " + error);
  });

    3)直接分享:

  $sharesdk.shareContent($sharesdk.PlatformID.SinaWeibo, params, function (  platform, state, shareInfo, error) {
              alert("state = " + state + "\n shareInfo = " + shareInfo + "\  n error = " + error);
  });

 

(2)授权

   1)调用授权方法:

  $sharesdk.authorize($sharesdk.PlatformID.SinaWeibo, function (platform, s  tate, error) {
              alert("state = " + state + "\n error = " + error);
  });

   2)获取用户资料的方法:

 $sharesdk.getUserInfo($sharesdk.PlatformID.SinaWeibo, function (platform,  state, user, error) {
             alert("state = " + state + "\n user = " + user + "\n error = "  + error);
 });