官方网址: http://dev.umeng.com/social/ios/operation#2
登陆友盟官网,在我的产品页面添加新应用,然后获取到Appkey.
登录新浪微博开放平台(点击链接),填写相关应用信息并上传icon图片。注意修改安全域名为sns.whalecloud.com 同时设置授权回调页为http://sns.whalecloud.com/sina2/callback 安全域名设置在应用信息-->基本信息.
新浪申请账号界面.jpg.png
授权回调页、取消授权回调页设置在应用信息-->高级信息.
新浪设置回调页.png
登录微信开放平台(点击链接),填写相关应用信息,审核通过后获取到微信AppID及AppSecret,如果需要微信登录功能,需要申请微信登录权限.
QQ及Qzone使用同一个AppID及Appkey,登录腾讯开放平台(点击链接) ,选择移动应用,填写相关应用信息并提交审核,未审核前通过只能使用测试账号,添加测试账号方法如下: 选择用户能力-->进阶社交能力-->应用调试者,添加测试账号必须在申请者好友列表中.
添加测试账号.png
登录人人开放平台(点击链接) ,填写相关应用信息,同时填写应用根域名为sns.whalecloud.com 具体位置: 基本信息-->应用根域名.
人人网基本信息.png
登录豆瓣开放平台(点击链接),创建应用并填写相关应用信息,注意权限必须选择广播,同时填写回调地址为http://sns.whalecloud.com/douban/callback.
豆瓣回调地址.png
豆瓣api.png
目前需要在友盟后台绑定的第三方账号为:新浪微博、腾讯微博、人人网、豆瓣、Qzone,其余平台如微信、QQ直接在代码中设置.
绑定地址:http://umeng.com/apps
登录友盟网站->左上角选择你们的产品->组件->社会化组件->设置.
添加到Umeng后台.png
短链接开关只对新浪微博、腾讯微博、人人网、豆瓣四个平台有效,开启短链接开关,分享文案中附加的链接会被转码,同时可以统计到分享回流率(点击链接的次数),关闭短链接开关则无法统计,短链接开关默认为关闭状态.
文字截断开关只对新浪微博、腾讯微博、人人网、豆瓣四个平台有效,同时只对使用自定义分享编辑页或没有分享编辑页用户有效,当分享文案超出字数限制时自动截断,开关状态默认关闭。
在新发布的iOS9系统上围绕用户数据的安全性和体验新增了一些安全特性,同时也影响了应用的实现以及集成方式,为了保证良好的稳定性和体验,需要做如下处理:
以iOS9 SDK编译的工程会默认以SSL安全协议进行网络传输,即HTTPS,如果依然使用HTTP协议请求网络会报系统异常并中断请求。目前可用如下两种方式保持用HTTP进行网络连接:
A、在info.plist中加入安全域名白名单(右键info.plist用source code打开)
NSAppTransportSecurity
NSExceptionDomains
log.umsns.com
NSIncludesSubdomains
NSTemporaryExceptionAllowsInsecureHTTPLoads
NSTemporaryExceptionMinimumTLSVersion
TLSv1.1
sns.whalecloud.com
NSIncludesSubdomains
NSTemporaryExceptionAllowsInsecureHTTPLoads
NSTemporaryExceptionMinimumTLSVersion
TLSv1.1
sina.cn
NSIncludesSubdomains
NSThirdPartyExceptionRequiresForwardSecrecy
weibo.cn
NSIncludesSubdomains
NSThirdPartyExceptionRequiresForwardSecrecy
weibo.com
NSIncludesSubdomains
NSThirdPartyExceptionAllowsInsecureHTTPLoads
NSThirdPartyExceptionRequiresForwardSecrecy
sinaimg.cn
NSIncludesSubdomains
NSThirdPartyExceptionAllowsInsecureHTTPLoads
NSThirdPartyExceptionRequiresForwardSecrecy
sinajs.cn
NSIncludesSubdomains
NSThirdPartyExceptionAllowsInsecureHTTPLoads
NSThirdPartyExceptionRequiresForwardSecrecy
sina.com.cn
NSIncludesSubdomains
NSThirdPartyExceptionAllowsInsecureHTTPLoads
NSThirdPartyExceptionRequiresForwardSecrecy
qq.com
NSIncludesSubdomains
NSThirdPartyExceptionAllowsInsecureHTTPLoads
NSThirdPartyExceptionRequiresForwardSecrecy
renren.com
NSIncludesSubdomains
NSThirdPartyExceptionAllowsInsecureHTTPLoads
NSThirdPartyExceptionRequiresForwardSecrecy
facebook.com
NSIncludesSubdomains
NSExceptionRequiresForwardSecrecy
fbcdn.net
NSIncludesSubdomains
NSExceptionRequiresForwardSecrecy
akamaihd.net
NSIncludesSubdomains
NSExceptionRequiresForwardSecrecy
twitter.com
NSIncludesSubdomains
NSExceptionRequiresForwardSecrecy
注:以上部分平台官方未给出相应白名单,由技术人员测试各个平台所收集而来,如果有所遗漏,请自行加入并向客服说明,我们会进一步补充名单.
B、在info.plist的NSAppTransportSecurity下新增NSAllowsArbitraryLoads并设置为YES,指定所有HTTP连接都可正常请求 http://dev.umeng.com/social/ios/ios9
NSAppTransportSecurity
NSAllowsArbitraryLoads
如果你的应用使用了如SSO授权登录或跳转分享功能,在iOS9下就需要增加一个可跳转的白名单,指定对应跳转App的URL Scheme,否则将在第三方平台判断是否跳转时用到的canOpenURL时返回NO,进而只进行webview授权或授权/分享失败.
同样在info.plist增加:
LSApplicationQueriesSchemes
wechat
weixin
sinaweibohd
sinaweibo
sinaweibosso
weibosdk
weibosdk2.5
mqqapi
mqq
mqqOpensdkSSoLogin
mqqconnect
mqqopensdkdataline
mqqopensdkgrouptribeshare
mqqopensdkfriend
mqqopensdkapi
mqqopensdkapiV2
mqqopensdkapiV3
mqzoneopensdk
wtloginmqq
wtloginmqq2
mqqwpa
mqzone
mqzonev2
mqzoneshare
wtloginqzone
mqzonewx
mqzoneopensdkapiV2
mqzoneopensdkapi19
mqzoneopensdkapi
mqqbrowser
mttbrowser
renrenios
renrenapi
renren
renreniphone
laiwangsso
yixin
yixinopenapi
instagram
whatsapp
line
fbapi
fb-messenger-api
fbauth2
fbshareextension
iOS9 SDK新增了对App瘦身的功能,详情见App Thining。目前各个第三方平台正在进行App thining的支持,所以为了正常使用第三方SDK及分享SDK,需要在Build Setting中将Enable bitcode关闭,或设置编译标识ENABLE_BITCODE=NO。
如需使用CocoaPods 在Podfile中增加一行,内容如下:
pod 'UMengSocial', '~> 5.0'
然后执行安装即可
pod install
http://dev.umeng.com/social/ios/sdk-download
#import "UMSocial.h"
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
[UMSocialData setAppKey:@"your Umeng appKey"];
// 用下面的代码打开我们SDK在控制台的输出后能看到相应的错误码
[UMSocialData openLog:YES];
}
并添加下方的系统回调方法:
- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary*)options{
return [UMSocialSnsService handleOpenURL:url];
}
URL schemes 和跳出应用后返回应用的逻辑相关,因此如果使用了SSO授权功能或QQ、微信、webview方式的Facebook,就必须配置URL schemes,否则跳出应用后将无法返回.
在你的工程设置项,targets 一栏下,选中自己的 target,在 Info->URL Types 中添加 URL Schemes。如果使用的是Xcode3或更低版本,则需要在plist文件中添加。获取各个平台appkey或者appid的方法可以参考分享详细文档绑定各个平台部分,各个平台的url scheme格式如下表:
平台 | url scheme设置格式 ||
------------------|----------------|
新浪微博 | “wb”+新浪appkey,例如“wb126663232” |
微信 | 微信应用appId,例如“wxd9a39c7122aa6516” |
人人网 | “rm”+你的应用bundle id,例如“rmcom.umeng.SocialSDK” |
QQ、QQ空间 | 需要添加两个URL schemes 1. “QQ”+腾讯QQ互联应用appId转换成十六进制(不足8位前面补0),例如“QQ05FC5B14”。生成十六进制方法:点击链接。2.“tencent“+腾讯QQ互联应用Id,例如“tencent100424468" |
来往 | Identifier填“Laiwang”,URL Schemes填来往AppId.注意使用来往SDK后,Xcode工程other linker flags需要添加-ObjC参数� |
易信 | 易信Appkey,例如“yx35664bdff4db42c2b7be1e29390c1a06” |
Facebook | 集成最新的Facebook SDK在iOS7.0以上有效,若要使用我们提供的facebook分享需要设置“fb”+facebook AppID,例如“fb1440390216179601” |
第三方登录主要用于简化用户登录流程,通过用户拥有的微博、QQ、微信等第三方账号进行登录并且构建APP自己的登录账号体系.
实现第三方登录主要通过下面两步:
1.1第三方登录支持的平台
目前友盟社会化组件支持的第三方登录平台为:新浪微博、微信、QQ、QQ空间、腾讯微博、人人网、豆瓣、Facebook、Twitter.
在AppDelegate应用入口方法添加下面的方法:
//设置分享到QQ/Qzone的应用Id,和分享url 链接
#import "UMSocialQQHandler.h"
[UMSocialSinaSSOHandler openNewSinaSSOWithAppKey:@"新浪 appkey"
secret:@"新浪secret"
RedirectURL:@"http://sns.whalecloud.com/sina2/callback"];
在新浪微博登录按钮中实现下面的方法:
UMSocialSnsPlatform *snsPlatform = [UMSocialSnsPlatformManager getSocialPlatformWithName:UMShareToSina];
snsPlatform.loginClickHandler(self,[UMSocialControllerService defaultControllerService],YES,^(UMSocialResponseEntity *response){
// 获取微博用户名、uid、token等
if (response.responseCode == UMSResponseCodeSuccess) {
UMSocialAccountEntity *snsAccount = [[UMSocialAccountManager socialAccountDictionary] valueForKey:UMShareToSina];
NSLog(@"username is %@, uid is %@, token is %@ url is %@",snsAccount.userName,snsAccount.usid,snsAccount.accessToken,snsAccount.iconURL);
}});
删除授权调用下面的方法:
[[UMSocialDataService defaultDataService] requestUnOauthWithType:UMShareToSina completion:^(UMSocialResponseEntity *response){
NSLog(@"response is %@",response);
}];
QQ登录只支持SSO登录方式,必须具备手机QQ客户端,Qzone默认调用SSO登录.
添加配置文件参考文档:添加QQ及Qzone,添加相关库文件,配置URL schemes及添加系统回调,在AppDelegate应用入口方法添加下面的方法:
//设置分享到QQ/Qzone的应用Id,和分享url 链接
#import "UMSocialQQHandler.h"
[UMSocialQQHandler setQQWithAppId:@"qq id" appKey:@"qq apply" url:@"http://www.umeng.com/social"];
在QQ登录按钮中实现下面的方法:
UMSocialSnsPlatform *snsPlatform = [UMSocialSnsPlatformManager getSocialPlatformWithName:UMShareToQQ];
snsPlatform.loginClickHandler(self,[UMSocialControllerService defaultControllerService],YES,^(UMSocialResponseEntity *response){
// 获取微博用户名、uid、token等
if (response.responseCode == UMSResponseCodeSuccess) {
UMSocialAccountEntity *snsAccount = [[UMSocialAccountManager socialAccountDictionary] valueForKey:UMShareToQQ];
NSLog(@"username is %@, uid is %@, token is %@ url is %@",snsAccount.userName,snsAccount.usid,snsAccount.accessToken,snsAccount.iconURL);
}});
在Qzone登录按钮中实现下面的方法:
UMSocialSnsPlatform *snsPlatform = [UMSocialSnsPlatformManager getSocialPlatformWithName:UMShareToQzone];
snsPlatform.loginClickHandler(self,[UMSocialControllerService defaultControllerService],YES,^(UMSocialResponseEntity *response){
// 获取微博用户名、uid、token等
if (response.responseCode == UMSResponseCodeSuccess) {
UMSocialAccountEntity *snsAccount = [[UMSocialAccountManager socialAccountDictionary] valueForKey:UMShareToQzone];
NSLog(@"username is %@, uid is %@, token is %@ url is %@",snsAccount.userName,snsAccount.usid,snsAccount.accessToken,snsAccount.iconURL);
}});
添加配置文件参考文档:添加微信及朋友圈,添加相关库文件,配置URL schemes及添加系统回调:
#import "UMSocialWechatHandler.h"
//设置微信AppId、appSecret,分享url
[UMSocialWechatHandler setWXAppId:@"wxd930ea5d5a258f4f" appSecret:@"db426a9829e4b49a0dcac7b4162da6b6" url:@"http://www.umeng.com/social"];
在微信登录按钮中实现下面的方法:
UMSocialSnsPlatform *snsPlatform = [UMSocialSnsPlatformManager getSocialPlatformWithName:UMShareToWechatSession];
snsPlatform.loginClickHandler(self,[UMSocialControllerService defaultControllerService],YES,^(UMSocialResponseEntity *response){
if (response.responseCode == UMSResponseCodeSuccess) {
UMSocialAccountEntity *snsAccount = [[UMSocialAccountManager socialAccountDictionary]valueForKey:UMShareToWechatSession];
NSLog(@"username is %@, uid is %@, token is %@ url is %@",snsAccount.userName,snsAccount.usid,snsAccount.accessToken,snsAccount.iconURL);
}
});
使用微信分享、登录必须安装微信客户端,QQ登录、QQ空间分享过程中必须安装手机QQ客户端,在未安装客户端的设备上测试会提示下载,这是不符合苹果审核规则的。这是微信及腾讯QQ互联导致的问题。 解决方案: 首先调用微信SDK或QQ互联SDK的方法检测是否安装微信/QQ客户端:
[QQApiInterface isQQInstalled];
如果未安装客户端则隐藏对应登录或分享按钮。