iOS友盟社会化分享完全攻略

1 简介

现如今几乎所有人都有社交账号和社交App,而分享功能也几乎随处可见。本文的目的在于介绍分享功能的基本实现。使用的是友盟的社会化分享组件,这样就不用一个一个对接各个平台的接口,可以使用一套接口来实现多个平台的分享功能。本文以分享到微信、QQ、微博为例。

2 开发者账号

这里说的不是创建苹果的开发者账号,而是创建友盟和各个要分享到的平台的开发者账号。和苹果开发者账号一样,要使用友盟的服务,要分享到各个平台,都需要对应的开发者账号去获取key。

2.1 友盟开发者账号及key

打开友盟的首页(http://www.umeng.com),找到注册按钮,进入注册界面。注册需要邮箱、密码、联系人、电话、QQ等。注册成功后,登录。点击社会化分享的“立即使用”进入分享功能的管理界面。

在上面的模块中选择“管理”。

左侧选择“应用管理”-->“应用列表”。

这时候可以在右上角选择添加新应用了,也就是添加你要引入社会化分享的应用。界面如下,填写相应的信息即可。

添加完成后就可以在应用列表中看到添加的应用,并可以获取到应用专属的appkey,这个appkey是用来在代码中初始化友盟社会化分享功能的,没有这个appkey将不能使用相应功能。

2.2 新浪微博开放平台账号及key

进入新浪微博开放平台网站(http://open.weibo.com),用微博账号登录,如果没有就注册一个,现在感觉必须用手机号注册了,虽然可以选择用邮箱注册,注册过程中也要求绑定手机号,而且还失败!所以还是直接用手机号注册比较好。注册好后,登录开放平台。在顶部的导航栏选择“我的应用”。

这里进入后会要求你完善开发者信息,开发者类型建议选择个人,因为选择公司的话,在以后添加应用时需要进行身份认证,而公司的认证需要营业执照、税务登记等信息,非常麻烦,而且类型一旦选择,就不能更改了,也无法注销账号,也就意味着一旦选错,只能放弃这个账号了,而个人开发者,也需要上传身份证的照片。完善开发者信息后,就可以添加应用了。添加应用需要提交审核,而要提交审核需要完善开发者信息,当然也需要完善应用的信息。不过有趣的是,即使我们还处在提交审核之前的阶段,也即没有真正添加应用成功,这个时候在应用信息界面也已经有了我们需要的App
Key和App Secret了。但是,只有iOS是可以直接拿去使用并分享成功的,而Android涉及到签名的绑定,必须要审核通过才能使用分享功能。

2.3 微信开放平台账号及key

进入微信开放平台网站(https://open.weixin.qq.com),在右上角选择注册,必须用邮箱注册。注册成功后登录,在导航栏选择“管理中心”下的“移动应用”。

微信开放平台的应用创建很简单,总共可以创建10个移动应用,我们只需要填写一些必要的信息,如应用名、应用简介,然后需要上传28*28和108*108两种尺寸的应用图标,一个是分享时显示的,一个是在管理中心应用列表显示的。然后填写官网,勾选iOS和Android,填写对应的信息,就可以创建了。所以说微信还是开放包容一些,没有那么多必须认证的东西。不过需要审核,审核通过后,在应用列表我们的应用条目点击“查看”就可以获取我们需要的App ID和AppSecret了,还可以看到我们拥有的权限,我们有最基本的分享权限,如微信支付之类的都需要另外申请。

2.4 腾讯开放平台账号及key

进入腾讯开放平台网站(http://open.qq.com),注册一个QQ账号,也可以用现有的账号,然后登陆。在顶部的用户名右边选择“管理中心”来管理我们的应用。注意,腾讯开放平台也需要认证开发者身份,而且即使你是个人开发者,也需要上传手持身份证照相的照片,上传后就可以通过“管理中心”来创建我们的应用了,在左边可以选择平台。

选择平台后在右上角选择创建应用。这里还会让你选一次平台,然后填写应用的基本信息,上传16*16、512*512尺寸的应用图标以及2~5张应用截图。还需要填写一个终端信息,至少要在iPhone和iPad中填写一个。

AppStore ID就是我们应用的App ID,Bundle ID也很明白,这个URL schema是什么呢,它有解释,这里我只说具体怎么获取,在我们创建一个应用填写信息时,实际上在最顶部已经可以看到APP ID和APP KEY了,然后我们将其中的APP ID从十进制转为十六进制数,如果转换完后不满8位,就在前面加0,然后再在最前面加上“QQ”,最后应该是“QQXXXXXXXX”这样的内容,这就是我们要填写在这里的内容,具体为什么,我们在之后整合到Xcode中时再进行讲解。

提交审核后,我们就可以使用了,APP ID和APP KEY也已经获取了。

3 实现分享功能

3.1 下载并安装友盟社会化分享SDK

我们可以通过两种方式来安装SDK到我们的工程中。

3.1.1 使用CocoaPods继承

在Podfile中增加一行,内容如下:

pod 'UMengSocial', '~> 5.0'

然后执行安装即可

pod install

3.1.2 手动集成SDK

在下载网站(http://dev.umeng.com/social/ios/sdk-download)下载最新版的SDK,解压后,将形如UMSocial_Sdk_x.x.x的文件夹拖入工程目录,并且确认勾选了“Copy items to destination‘s group folder”选项,并选择你要添加到的Target。

3.2 设置Key

我们在申请友盟及各个平台账号的时候获取了各自对应的id和key,这时候就要使用了,在工程的AppDelegate.m文件中,先导入对应的包:

#import "UMSocial.h"
#import "UMSocialWechatHandler.h"
#import "UMSocialSinaSSOHandler.h"
#import "UMSocialQQHandler.h"

然后在(BOOL)application:(UIApplication *)applicationdidFinishLaunchingWithOptions:(NSDictionary *)launchOptions中设置各个key。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    ……
    // 友盟分享初始化
    [UMSocialData setAppKey:@"友盟key"];

    // 设置微信AppId、appSecret,分享url
    [UMSocialWechatHandler setWXAppId:@"AppId" appSecret:@"appSecret " url:@"url链接"];

    // 设置微博的AppKey、appSecret,分享url
    [UMSocialSinaSSOHandler openNewSinaSSOWithAppKey:@"AppKey"
                                              secret:@"appSecret"
                                         RedirectURL:@"url链接"];

    // 设置QQAppId、appSecret,分享url
    [UMSocialQQHandler setQQWithAppId:@"AppId" appKey:@"appSecret" url:@"url链接"];
    ……
}

3.3 实现分享界面及功能

我们可以自定义选择分享方向的界面,也可以使用友盟默认的样式,如下所示:

我们每添加一个分享方向,就会在这个界面多一个对应的app方框,我们这里添加微信好友、微信朋友圈、QQ好友、QQ空间、新浪微博五个。在响应要出现分享界面的方法中添加如下代码:

[UMSocialData defaultData].extConfig.wechatSessionData.title = @"标题";// 微信title
 [UMSocialData defaultData].extConfig.wechatTimelineData.title = @"标题";// 微信朋友圈title
 [UMSocialData defaultData].extConfig.qqData.title = @"标题";// QQ分享title
 [UMSocialData defaultData].extConfig.qzoneData.title = @"标题";// Qzone分享title
// 显示分享界面
 [UMSocialSnsService presentSnsIconSheetView:self appKey:@"友盟key" shareText:@"分享的文字内容" shareImage:[UIImage imageNamed:@"Icon"] shareToSnsNames:[NSArray arrayWithObjects:UMShareToWechatSession, UMShareToWechatTimeline, UMShareToQQ, UMShareToQzone, UMShareToSina, nil] delegate:self];

在代码中可以看出来,我们首先定义了分享内容的标题,然后定义分享文字、分享图片,这里要注意的是,如果不设图片,那么分享出去就会是只有分享文字,如果带有图片,那么就会是一个链接,链接的url是我们在appDelegate中设置的url。最后我们设置要分享到的平台组成的数组,从名字就可以看出来对应的平台了。

3.4 各平台SSO(免登陆)配置

如果我们进行SSO配置,那么分享时就不需要登录了,可以直接打开我们已经安装的应用。

在你的工程设置项,targets 一栏下,选中自己的target,在 Info->URL Types 中添加URL Schemes。如果使用的是Xcode3或更低版本,则需要在plist文件中添加。获取各个平台appkey或者appid的方法可以参考分享详细文档绑定各个平台部分,各个平台的url scheme格式如下表:

还记得我们之前创建腾讯开发平台应用的时候填写的URL schema么,其实就是这里的内容。

这一步设置完后,我们还需要在appDelegate.m文件中加一个系统回调方法:

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
{
    BOOL result = [UMSocialSnsService handleOpenURL:url];
    if (result == FALSE) {
        //调用其他SDK,例如支付宝SDK等
    }
    return result;
}

添加了这个方法才能在分享后从其他应用回到我们的应用来。

最后,我们还要添加一些系统库文件来满足SDK的需求:

  • Security.framework
  • libz.dylib
  • libstdc++.dylib
  • CoreTelephony.framework
  • libsqlite3.dylib
  • CoreGraphics.Framework
  • SystemConfiguration.framework
  • libiconv.dylib

3.5 适配iOS 9系统

在新发布的iOS9系统上围绕用户数据的安全性和体验新增了一些安全特性,同时也影响了应用的实现以及集成方式,为了保证良好的稳定性和体验,需要做一些处理。

3.5.1 HTTP传输安全

以iOS9 SDK编译的工程会默认以SSL安全协议进行网络传输,即HTTPS,如果依然使用HTTP协议请求网络会报系统异常并中断请求。可以在info.plist的NSAppTransportSecurity下新增NSAllowsArbitraryLoads并设置为YES,指定所有HTTP连接都可正常请求。

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSAllowsArbitraryLoads</key>
    <true/>
</dict>

3.5.2 应用跳转

如果你的应用使用了如SSO授权登录或跳转分享功能,在iOS9下就需要增加一个可跳转的白名单,指定对应跳转App的URL Scheme,否则将在第三方平台判断是否跳转时用到的canOpenURL时返回NO,进而只进行webview授权或授权/分享失败。同样在info.plist增加:

<key>LSApplicationQueriesSchemes</key>
<array>
    <!-- 微信 URL Scheme 白名单-->
    <string>wechat</string>
    <string>weixin</string>

    <!-- 新浪微博 URL Scheme 白名单-->
    <string>sinaweibohd</string>
    <string>sinaweibo</string>
    <string>sinaweibosso</string>
    <string>weibosdk</string>
    <string>weibosdk2.5</string>

    <!-- QQ、Qzone URL Scheme 白名单-->
    <string>mqqapi</string>
    <string>mqq</string>
    <string>mqqOpensdkSSoLogin</string>
    <string>mqqconnect</string>
    <string>mqqopensdkdataline</string>
    <string>mqqopensdkgrouptribeshare</string>
    <string>mqqopensdkfriend</string>
    <string>mqqopensdkapi</string>
    <string>mqqopensdkapiV2</string>
    <string>mqqopensdkapiV3</string>
    <string>mqzoneopensdk</string>
    <string>wtloginmqq</string>
    <string>wtloginmqq2</string>
    <string>mqqwpa</string>
    <string>mqzone</string>
    <string>mqzonev2</string>
    <string>mqzoneshare</string>
    <string>wtloginqzone</string>
    <string>mqzonewx</string>
    <string>mqzoneopensdkapiV2</string>
    <string>mqzoneopensdkapi19</string>
    <string>mqzoneopensdkapi</string>
    <string>mqqbrowser</string>
    <string>mttbrowser</string>

    <!-- 支付宝 URL Scheme 白名单-->
    <string>alipay</string>
    <string>alipayshare</string>

    <!-- 人人 URL Scheme 白名单-->
    <string>renrenios</string>
    <string>renrenapi</string>
    <string>renren</string>
    <string>renreniphone</string>

    <!-- 来往 URL Scheme 白名单-->
    <string>laiwangsso</string>

    <!-- 易信 URL Scheme 白名单-->
    <string>yixin</string>
    <string>yixinopenapi</string>

    <!-- instagram URL Scheme 白名单-->
    <string>instagram</string>

    <!-- whatsapp URL Scheme 白名单-->
    <string>whatsapp</string>

    <!-- line URL Scheme 白名单-->
    <string>line</string>

    <!-- Facebook URL Scheme 白名单-->
    <string>fbapi</string>
    <string>fb-messenger-api</string>
    <string>fbauth2</string>
    <string>fbshareextension</string>
</array>

3.5.3 应用瘦身

iOS9 SDK新增了对App瘦身的功能,详情见App Thining。目前各个第三方平台正在进行App thining的支持,所以为了正常使用第三方SDK及分享SDK,需要在Build Setting中将Enable bitcode关闭,或设置编译标识ENABLE_BITCODE=NO。

注:bitcode仅在Xcode7以上显示并默认开启。

参考:

友盟社会化分享iOS文档:http://dev.umeng.com/social/ios/operation

版权所有:http://blog.csdn.net/cloudox_

时间: 2024-10-07 09:22:37

iOS友盟社会化分享完全攻略的相关文章

IOS友盟 社会化分享 &gt; 社会化iOS组件 &gt; 分享集成

由于苹果审核政策需求,建议大家对未安装客户端平台进行隐藏,在设置QQ.微信AppID之后调用下面的方法,[UMSocialConfig hiddenNotInstallPlatforms:@[UMShareToQQ, UMShareToQzone, UMShareToWechatSession, UMShareToWechatTimeline]]; 这个接口只对默认分享面板平台有隐藏功能,自定义分享面板或登录按钮需要自己处理 友盟分享sdk5.2.1已经兼容ipv6,请大家升级sdk,避免无法通

iOS友盟社会化分享U-Share分享面板不显示的问题(基本配置没有错误)

//要先是window可视化 [self.window makeKeyAndVisible]; //添加友盟分享[[UMSocialManager defaultManager] openLog:YES]; //[UMSocialGlobal shareInstance].isUsingWaterMark = YES;[UMSocialGlobal shareInstance].isClearCacheWhenGetUserInfo = NO; /* 设置友盟appkey */[[UMSocia

Android应用开发-小巫CSDN博客客户端之集成友盟社会化分享组件

Android应用开发-小巫CSDN博客客户端之集成友盟社会化分享组件 上一篇博客给大家介绍了如何分析网页并且使用jsoup这个库对html代码进行解析,本篇博客继续给大家介绍如何集成友盟社会化组件,如何使用SDK提供的API轻松实现多平台的社会化分享,官网的文档和Demo看起来很头疼的有木有,小巫在集成这个社会化的组件也有点烦躁,所以也需要各位耐心看下面的博文把友盟社会化组件集成到你的应用中去.为什么要选择友盟呢,这里也是答应了小喵的,要帮忙集成他们的服务,所以也顺带帮他们写一篇这样的博文,千

Android集成友盟社会化分享功能

1.  产品概述 友盟社会化组件,可以让移动应用快速具备社会化分享.登录.评论.喜欢等功能,并提供实时.全面的社会化数据统计分析服务. 指南将会手把手教你使用社会化组件SDK,用5分钟为APP增加新浪微博.腾讯微博.人人网分享功能. 注意:本文示例代码均针对最新版SDK,如果你所用SDK的类名或方法名与此文不符合,请使用你所用SDK的随包文档.或者下载使用最新版SDK. 2.  获取友盟Appkey 如果你之前已经在友盟注册了应用,并获取到了Appkey,可以继续使用它. 如果你尚未在友盟注册开

iOS:友盟SDK分享

友盟SDK分享 基本步骤: 1.注册友盟开发者账号 2.登陆账号,添加新应用,获取AppKey 3.下载并安装SDK 4.解压SDK压缩包,将形如UMSocial_sdk_x.x.x文件拖入工程中 例如:UMSocial_Sdk_4.4 5.项目面板中手动添加系统库SystemConfiguration.framework 注意:       1)添加SDK后需要手动添加系统库SystemConfiguration.framework 2) 若你的工程设置了all_load,需要添加手机QQ S

友盟社会化分享 ### 微信发送被拒绝 微信与朋友圈点击无响应

附友盟3精贴 http://bbs.umeng.com/forum.php?mod=viewthread&tid=5832&extra=page%3D1%26filter%3Dtypeid%26typeid%3D12 原文: (5):签名问题.检查签名是否一致,请按照以下步骤检查: 1>:在命令行运行以下命令: keytool -list -alias aliasName -keystore xxx.keystore -storepass xxx -keypass xxx 说明: -

Android友盟社会化分享,那些我踩过的坑

按照sdk的demo进行集成后,碰到几个大坑.现在总结下这些坑同时给出我的解决方法. 1.点击qq或空间分享,出现应用无响应(ANR)的情况. ?解决方法:?查查是否分享的图片参数是否已经设置,没有设置会出现ANR,设置后可以正常分享.title.url.content等参数尽量都设置一下,以防出现其他莫名奇妙问题 2.微信分享不成功.现象是点击微信或朋友圈分享后,出现微信的界面,提示请稍候,然后一闪而过消失.查看logcat出现错误: ## get sso Handler, requestCo

Android 友盟社会化组件-分享实现

本文章链接地址:http://dev.umeng.com/social/android/share/quick-integration 分享快速集成 1 产品概述 友盟社会化组件,可以让移动应用快速具备社会化分享.登录.评论.喜欢等功能,并提供实时.全面的社会化数据统计分析服务. 指南将会手把手教你使用社会化组件SDK,用5分钟为APP增加新浪微博.腾讯微博.人人网分享功能. 注意:本文示例代码均针对最新版SDK,如果你所用SDK的类名或方法名与此文不符合,请使用你所用SDK的随包文档.或者下载

友盟社会化Android组件之第三方登录

前段时间公司需要,逐步了新浪微博.腾讯qq.微信等授权登录验证的问题.如果要一个个申请,看文档写代码也是很多流程的.干脆用友盟社会化Android组件之第三方登录.友盟是集成了这些平台,还有其他主流的平台的.我在这里主要讲一下友盟里面微博登录.先看看友盟是怎么介绍自已的. 一.友盟社会化分享介绍 友盟社会化分享组件,帮助移动应用快速具备微信分享,微博分享.登录.评论.喜欢等社会化组件功能,助力产品推广,并提供实时.全面的社会化数据统计分析服务,是国内最大的社会化分享SDK. 支持各大社交平台 精