服务器之家:专注于服务器技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - IOS - 详解iOS社会化分享集成

详解iOS社会化分享集成

2021-04-19 18:07iOS开发网 IOS

这篇文章主要介绍了详解iOS社会化分享集成的相关知识点以及实现的代码效果讲述,有兴趣的朋友参考下。

最近项目需要加入第三方分享功能,看了网上的一些第三方sdk的介绍,觉得sharesdk是一个很强大方便的第三方工具,所以选择了sharesdk来完成。这里记录一下完整的集成与使用流程。

1.申请sharesdk的appkey以及第三方平台的appkey

sharesdk的appkey直接到mob官网申请即可

2、下载地址:

http://www.mob.com/downloaddetail/sharesdk/ios

下载的时候根据自己需求选择需要的平台,我这里选择的是默认分享视图,只测试微博,微信,qq。

详解iOS社会化分享集成

下载之后解压出来如下,我们需要导入项目的是这整个sdk资源文件:

详解iOS社会化分享集成

3.开始集成

(1)将上面下载的sdk文件夹拖进xcode项目里,如下图:

详解iOS社会化分享集成

详解iOS社会化分享集成

详解iOS社会化分享集成

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

(2)添加依赖库,添加步骤如下图:

详解iOS社会化分享集成

必须添加的依赖库如下(xcode 7 之后 .dylib库后缀名更改为.tbd):

?
1
2
3
4
libicucore.dylib
libz.dylib
libstdc++.dylib
javascriptcore.framework

以下依赖库根据社交平台添加:

新浪微博sdk依赖库

?
1
2
imageio.framework
 libsqlite3.dylib

qq好友和qq空间sdk依赖库

?
1
libsqlite3.dylib

微信sdk依赖库

?
1
libsqlite3.dylib

(3)设置sharesdk的appkey并调用初始化方法初始化对应的第三方社交平台

i.在项目工程的info.plist 中如图增加 mobappkey 和 mobappsecret 两个字段

在 mobappkey中 设置sharesdk的appkey,mobappsecret中 设置sharesdk的appsecret,如下图:

详解iOS社会化分享集成

ii.打开appdelegate.m(代表你的工程名字)导入头文件**

?
1
2
3
4
5
6
7
8
#import <span style="color: rgb(101, 123, 131); font-family: menlo; font-size: 9pt; line-height: 1.8em;"><sharesdk/sharesdk.h></span><br data-filtered="filtered"><sharesdk sharesdk.h=""> #import <span style="color: rgb(101, 123, 131); font-family: menlo; font-size: 9pt; line-height: 1.8em;"><sharesdkconnector/sharesdkconnector.h></span><sharesdkconnector sharesdkconnector.h="">
//腾讯开放平台(对应qq和qq空间)sdk头文件
#import <span style="color: rgb(101, 123, 131); font-family: menlo; font-size: 9pt; line-height: 1.8em;"> <tencentopenapi/tencentoauth.h></span><tencentopenapi tencentoauth.h="">
 #import <span style="color: rgb(101, 123, 131); font-family: menlo; font-size: 9pt; line-height: 1.8em;"><tencentopenapi/qqapiinterface.h></span><tencentopenapi qqapiinterface.h="">
//微信sdk头文件
#import "wxapi.h"
 //新浪微博sdk头文件
 #import "weibosdk.h"</tencentopenapi></tencentopenapi></sharesdkconnector></sharesdk>

 

iii.在- (bool)application: didfinishlaunchingwithoptions:方法中调用registeractiveplatforms方法来初始化

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
- (bool)application:(uiapplication *)application didfinishlaunchingwithoptions:(nsdictionary *)launchoptions {**
 
  // override point for customization after application launch.
 
  [sharesdk registeractiveplatforms:@[
        @(ssdkplatformtypesinaweibo),
        @(ssdkplatformtypewechat),
        @(ssdkplatformtypeqq)]
     onimport:^(ssdkplatformtype platformtype)
  {
   switch (platformtype)
   {
    case ssdkplatformtypewechat:
     [sharesdkconnector connectwechat:[wxapi class]];
     break;
    case ssdkplatformtypeqq:
     [sharesdkconnector connectqq:[qqapiinterface class] tencentoauthclass:[tencentoauth class]];
     break;
    case ssdkplatformtypesinaweibo:
     [sharesdkconnector connectweibo:[weibosdk class]];
     break;
    default:
     break;
   }
  }     
 onconfiguration:^(ssdkplatformtype platformtype, nsmutabledictionary *appinfo)  {
   switch (platformtype)
   {   
    case ssdkplatformtypesinaweibo:
     //设置新浪微博应用信息,其中authtype设置为使用sso+web形式授权
     [appinfo ssdksetupsinaweibobyappkey:@"568898243"
          appsecret:@"38a4f8204cc784f81f9f0daaf31e02e3"
           redirecturi:@"http://www.sharesdk.cn"
            authtype:ssdkauthtypeboth];
     break;
    case ssdkplatformtypewechat:
     [appinfo ssdksetupwechatbyappid:@"wx4868b35061f87885"
        appsecret:@"64020361b8ec4c99936c0e3999a9f249"];
     break;
    case ssdkplatformtypeqq:
     [appinfo ssdksetupqqbyappid:@"100371282"
         appkey:@"aed9b0303e3ed1e27bae87c33761161d"
          authtype:ssdkauthtypeboth];
     break;
    default:
     break;
   }
  }];
 return yes;
 }

(4)添加分享代码

i.需要在分享的视图中导入的头文件

?
1
<span class="15" style="line-height: 1.8em; font-family: menlo; color: rgb(101, 123, 131); font-size: 9pt; background-image: initial; background-attachment: initial; background-size: initial; background-origin: initial; background-clip: initial; background-position: initial; background-repeat: initial;"> </span><span style="line-height: 1.8em; font-family: menlo; color: rgb(101, 123, 131); font-size: 9pt; background-image: initial; background-attachment: initial; background-size: initial; background-origin: initial; background-clip: initial; background-position: initial; background-repeat: initial;">#import <sharesdk/sharesdk.h></span>
?
1
#import <sharesdkui/sharesdk+ssui.h>

ii.调用构造分享参数接口和分享的接口

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
//1、创建分享参数** nsmutabledictionary *shareparams = [nsmutabledictionary dictionary];
 [shareparams ssdksetupshareparamsbytext:@"分享内容"
         images:[[nsbundle mainbundle] pathforresource:@"cod13" oftype:@"jpg"]
          url:[nsurl urlwithstring:@"http://mob.com"]
         title:@"分享标题"
         type:ssdkcontenttypeauto];//2、分享(可以弹出我们的分享菜单和编辑界面)**
[sharesdk showshareactionsheet:nil //要显示菜单的视图, ipad版中此参数作为弹出菜单的参照视图,只有传这个才可以弹出我们的分享菜单,可以传分享的按钮对象或者自己创建小的view 对象,iphone可以传nil不会影响
       items:nil
     shareparams:shareparams
   onsharestatechanged:^(ssdkresponsestate state, ssdkplatformtype platformtype, nsdictionary *userdata, ssdkcontententity *contententity, nserror *error, bool end) {
     switch (state) {
      case ssdkresponsestatesuccess:
      {
       nslog(@"分享成功");
       break;
      }
      case ssdkresponsestatefail:
      {
       nslog(@"分享失败~~%@",error.description);
       break;
      }
      default:
       break;
     }
    }
  ];

(5)配置平台的url scheme

i.微信的url scheme的配置就是微信开放平台注册应用获取得到的appid,在url types中添加微信appid 即可;

ii.微博的url scheme的配置就是微博开放平台注册应用获取到的appkey,并在前面加wb前缀,格式为wb+appkey;

iii.qq的url scheme的配置就是腾讯开放平台注册应用获取到的appid,并且转成十六进制,另外在前面加qq前缀,格式为:qq+ appid的16进制(如果appid转换的16进制数不够8位则在前面补0,如转换的是:5fb8b52,则最终填入为:qq05fb8b52 ,则最终填入为:qq05fb8b52 注意:转换后的字母要大写)那么如何转换的,这个可以在网上找一个在线十进制转十六进制的转换器进行转换就可以,例如 http://www.sojson.com/hexconvert.html

具体配置见下图:

详解iOS社会化分享集成

(6)配置平台的白名单

在ios 9下涉及到平台客户端跳转,系统会自动到项目info.plist下检测是否设置平台scheme。对于需要配置的平台,如果没有配置,就无法正常跳转平台客户端。因此要支持客户端的分享和授权等,需要配置scheme名单。

具体方法:

1)、在项目的info.plist中添加一lsapplicationqueriesschemes,类型为array。

2)、然后给它添加一个需要支持的项目,类型为字符串类型;

详解iOS社会化分享集成

各平台****openurl****白名单说明

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
*新浪微博*
sinaweibo
sinaweibohd
sinaweibosso
sinaweibohdsso
weibosdk
weibosdk2.5
 
*微信*
wechat
weixin
 
*qq*
mqzoneopensdk
mqzoneopensdkapi
mqzoneopensdkapi19
mqzoneopensdkapiv2
mqqopensdkssologin
mqqopensdkapiv2
mqqopensdkapiv3
wtloginmqq2
mqqapi
mqqwpa
mqzone
mqq
mqqopensdkapiv4

(7)另外一些相关配置

**1)新浪微博,微信sdk都需要在项目的build settings中的other linker flags添加”-objc”,如果不配置有可能会崩溃。步骤如下: **

详解iOS社会化分享集成

2)新浪微博网页授权分享需要暂时退回到http协议。步骤如下:

具体方法:

在项目的info.plist中添加一个key:app transport security settings,类型为字典类型。

然后给它添加一个key:allow arbitrary loads,类型为boolean类型,值为yes;

详解iOS社会化分享集成

3)新浪微博客户端分享还需要在plist文件里添加隐私权限配置:相册权限:privacy - photo library usage description ,如下图:

详解iOS社会化分享集成

以上就是完整的集成步骤,到这里就结束了!很简单的吧!

延伸 · 阅读

精彩推荐
  • IOSiOS中tableview 两级cell的展开与收回的示例代码

    iOS中tableview 两级cell的展开与收回的示例代码

    本篇文章主要介绍了iOS中tableview 两级cell的展开与收回的示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧...

    J_Kang3862021-04-22
  • IOSIOS开发之字典转字符串的实例详解

    IOS开发之字典转字符串的实例详解

    这篇文章主要介绍了IOS开发之字典转字符串的实例详解的相关资料,希望通过本文能帮助到大家,让大家掌握这样的方法,需要的朋友可以参考下...

    苦练内功5832021-04-01
  • IOSIOS 屏幕适配方案实现缩放window的示例代码

    IOS 屏幕适配方案实现缩放window的示例代码

    这篇文章主要介绍了IOS 屏幕适配方案实现缩放window的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要...

    xiari5772021-06-01
  • IOSiOS 雷达效果实例详解

    iOS 雷达效果实例详解

    这篇文章主要介绍了iOS 雷达效果实例详解的相关资料,需要的朋友可以参考下...

    SimpleWorld11022021-01-28
  • IOSiOS通过逆向理解Block的内存模型

    iOS通过逆向理解Block的内存模型

    自从对 iOS 的逆向初窥门径后,我也经常通过它来分析一些比较大的应用,参考一下这些应用中某些功能的实现。这个探索的过程乐趣多多,不仅能满足自...

    Swiftyper12832021-03-03
  • IOS关于iOS自适应cell行高的那些事儿

    关于iOS自适应cell行高的那些事儿

    这篇文章主要给大家介绍了关于iOS自适应cell行高的那些事儿,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的...

    daisy6092021-05-17
  • IOSiOS布局渲染之UIView方法的调用时机详解

    iOS布局渲染之UIView方法的调用时机详解

    在你刚开始开发 iOS 应用时,最难避免或者是调试的就是和布局相关的问题,下面这篇文章主要给大家介绍了关于iOS布局渲染之UIView方法调用时机的相关资料...

    windtersharp7642021-05-04
  • IOS解析iOS开发中的FirstResponder第一响应对象

    解析iOS开发中的FirstResponder第一响应对象

    这篇文章主要介绍了解析iOS开发中的FirstResponder第一响应对象,包括View的FirstResponder的释放问题,需要的朋友可以参考下...

    一片枫叶4662020-12-25