官方网址: http://dev.umeng.com/social/ios/operation#2
登陆友盟官网,在我的产品页面添加新应用,然后获取到Appkey.
http://www.jianshu.com/p/be1f596090c7
登录新浪微博开放平台(点击链接),填写相关应用信息并上传icon图片。注意修改安全域名为sns.whalecloud.com 同时设置授权回调页为http://sns.whalecloud.com/sina2/callback 安全域名设置在应用信息-->基本信息.
授权回调页、取消授权回调页设置在应用信息-->高级信息.
安全域名的修改需要二次审核通过才生效,授权回调页修改即时生效.
登录微信开放平台(点击链接),填写相关应用信息,审核通过后获取到微信AppID及AppSecret,如果需要微信登录功能,需要申请微信登录权限.
QQ及Qzone使用同一个AppID及Appkey,登录腾讯开放平台(点击链接) ,选择移动应用,填写相关应用信息并提交审核,未审核前通过只能使用测试账号,添加测试账号方法如下: 选择用户能力-->进阶社交能力-->应用调试者,添加测试账号必须在申请者好友列表中.
登录人人开放平台(点击链接) ,填写相关应用信息,同时填写应用根域名为sns.whalecloud.com 具体位置: 基本信息-->应用根域名.
登录豆瓣开放平台(点击链接),创建应用并填写相关应用信息,注意权限必须选择广播,同时填写回调地址为http://sns.whalecloud.com/douban/callback.
目前需要在友盟后台绑定的第三方账号为:新浪微博、腾讯微博、人人网、豆瓣、Qzone,其余平台如微信、QQ直接在代码中设置.
绑定地址:http://umeng.com/apps
登录友盟网站->左上角选择你们的产品->组件->社会化组件->设置.
短链接开关只对新浪微博、腾讯微博、人人网、豆瓣四个平台有效,开启短链接开关,分享文案中附加的链接会被转码,同时可以统计到分享回流率(点击链接的次数),关闭短链接开关则无法统计,短链接开关默认为关闭状态.
文字截断开关只对新浪微博、腾讯微博、人人网、豆瓣四个平台有效,同时只对使用自定义分享编辑页或没有分享编辑页用户有效,当分享文案超出字数限制时自动截断,开关状态默认关闭。
在新发布的iOS9系统上围绕用户数据的安全性和体验新增了一些安全特性,同时也影响了应用的实现以及集成方式,为了保证良好的稳定性和体验,需要做如下处理:
以iOS9 SDK编译的工程会默认以SSL安全协议进行网络传输,即HTTPS,如果依然使用HTTP协议请求网络会报系统异常并中断请求。目前可用如下两种方式保持用HTTP进行网络连接:
A、在info.plist中加入安全域名白名单(右键info.plist用source code打开)
<key>NSAppTransportSecuritykey>
<dict>
<key>NSExceptionDomainskey>
<dict>
<key>log.umsns.comkey>
<dict>
<key>NSIncludesSubdomainskey>
<true/>
<key>NSTemporaryExceptionAllowsInsecureHTTPLoadskey>
<true/>
<key>NSTemporaryExceptionMinimumTLSVersionkey>
<string>TLSv1.1string>
dict>
<key>sns.whalecloud.comkey>
<dict>
<key>NSIncludesSubdomainskey>
<true/>
<key>NSTemporaryExceptionAllowsInsecureHTTPLoadskey>
<true/>
<key>NSTemporaryExceptionMinimumTLSVersionkey>
<string>TLSv1.1string>
dict>
<key>sina.cnkey>
<dict>
<key>NSIncludesSubdomainskey>
<true/>
<key>NSThirdPartyExceptionRequiresForwardSecrecykey>
<false/>
dict>
<key>weibo.cnkey>
<dict>
<key>NSIncludesSubdomainskey>
<true/>
<key>NSThirdPartyExceptionRequiresForwardSecrecykey>
<false/>
dict>
<key>weibo.comkey>
<dict>
<key>NSIncludesSubdomainskey>
<true/>
<key>NSThirdPartyExceptionAllowsInsecureHTTPLoadskey>
<true/>
<key>NSThirdPartyExceptionRequiresForwardSecrecykey>
<false/>
dict>
<key>sinaimg.cnkey>
<dict>
<key>NSIncludesSubdomainskey>
<true/>
<key>NSThirdPartyExceptionAllowsInsecureHTTPLoadskey>
<true/>
<key>NSThirdPartyExceptionRequiresForwardSecrecykey>
<false/>
dict>
<key>sinajs.cnkey>
<dict>
<key>NSIncludesSubdomainskey>
<true/>
<key>NSThirdPartyExceptionAllowsInsecureHTTPLoadskey>
<true/>
<key>NSThirdPartyExceptionRequiresForwardSecrecykey>
<false/>
dict>
<key>sina.com.cnkey>
<dict>
<key>NSIncludesSubdomainskey>
<true/>
<key>NSThirdPartyExceptionAllowsInsecureHTTPLoadskey>
<true/>
<key>NSThirdPartyExceptionRequiresForwardSecrecykey>
<false/>
dict>
<key>qq.comkey>
<dict>
<key>NSIncludesSubdomainskey>
<true/>
<key>NSThirdPartyExceptionAllowsInsecureHTTPLoadskey>
<true/>
<key>NSThirdPartyExceptionRequiresForwardSecrecykey>
<false/>
dict>
<key>renren.comkey>
<dict>
<key>NSIncludesSubdomainskey>
<true/>
<key>NSThirdPartyExceptionAllowsInsecureHTTPLoadskey>
<true/>
<key>NSThirdPartyExceptionRequiresForwardSecrecykey>
<false/>
dict>
<key>facebook.comkey>
<dict>
<key>NSIncludesSubdomainskey>
<true/>
<key>NSExceptionRequiresForwardSecrecykey>
<false/>
dict>
<key>fbcdn.netkey>
<dict>
<key>NSIncludesSubdomainskey>
<true/>
<key>NSExceptionRequiresForwardSecrecykey>
<false/>
dict>
<key>akamaihd.netkey>
<dict>
<key>NSIncludesSubdomainskey>
<true/>
<key>NSExceptionRequiresForwardSecrecykey>
<false/>
dict>
<key>twitter.comkey>
<dict>
<key>NSIncludesSubdomainskey>
<true/>
<key>NSExceptionRequiresForwardSecrecykey>
<false/>
dict>
dict>
dict>
注:以上部分平台官方未给出相应白名单,由技术人员测试各个平台所收集而来,如果有所遗漏,请自行加入并向客服说明,我们会进一步补充名单.
B、在info.plist的NSAppTransportSecurity下新增NSAllowsArbitraryLoads并设置为YES,指定所有HTTP连接都可正常请求 http://dev.umeng.com/social/ios/ios9
<key>NSAppTransportSecuritykey>
<dict>
<key>NSAllowsArbitraryLoadskey>
<true/>
dict>
如果你的应用使用了如SSO授权登录或跳转分享功能,在iOS9下就需要增加一个可跳转的白名单,指定对应跳转App的URL Scheme,否则将在第三方平台判断是否跳转时用到的canOpenURL时返回NO,进而只进行webview授权或授权/分享失败.
同样在info.plist增加:
<key>LSApplicationQueriesSchemeskey>
<array>
<string>wechatstring>
<string>weixinstring>
<string>sinaweibohdstring>
<string>sinaweibostring>
<string>sinaweibossostring>
<string>weibosdkstring>
<string>weibosdk2.5string>
<string>mqqapistring>
<string>mqqstring>
<string>mqqOpensdkSSoLoginstring>
<string>mqqconnectstring>
<string>mqqopensdkdatalinestring>
<string>mqqopensdkgrouptribesharestring>
<string>mqqopensdkfriendstring>
<string>mqqopensdkapistring>
<string>mqqopensdkapiV2string>
<string>mqqopensdkapiV3string>
<string>mqzoneopensdkstring>
<string>wtloginmqqstring>
<string>wtloginmqq2string>
<string>mqqwpastring>
<string>mqzonestring>
<string>mqzonev2string>
<string>mqzonesharestring>
<string>wtloginqzonestring>
<string>mqzonewxstring>
<string>mqzoneopensdkapiV2string>
<string>mqzoneopensdkapi19string>
<string>mqzoneopensdkapistring>
<string>mqqbrowserstring>
<string>mttbrowserstring>
<string>renreniosstring>
<string>renrenapistring>
<string>renrenstring>
<string>renreniphonestring>
<string>laiwangssostring>
<string>yixinstring>
<string>yixinopenapistring>
<string>instagramstring>
<string>whatsappstring>
<string>linestring>
<string>fbapistring>
<string>fb-messenger-apistring>
<string>fbauth2string>
<string>fbshareextensionstring>
array>
pod 'UMengSocial', '~> 5.0'
然后执行安装即可 pod install
#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 SDK在iOS7.0以上有效,若要使用我们提供的facebook分享需要设置“fb”+facebook AppID,例如“fb1440390216179601” |
第三方登录主要用于简化用户登录流程,通过用户拥有的微博、QQ、微信等第三方账号进行登录并且构建APP自己的登录账号体系.
实现第三方登录主要通过下面两步:
目前友盟社会化组件支持的第三方登录平台为:新浪微博、微信、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);
}});
注意微信登录必须先在微信开放平台申请微信登录权限
在你的程序APPdelegate入口方法添加下面的代码:
#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);
}
});
[QQApiInterface isQQInstalled];
如果未安装客户端则隐藏对应登录或分享按钮。