iOS 友盟登录和分享

0.225字数 3458阅读 4006

新手可以来看下,如果有错误可以告诉我哈。。。

1.  集成友盟社会化组件流程

1.  

1.1  注册友盟账号

登陆友盟官网,在我的产品页面添加新应用,然后获取到Appkey。

1.2  申请第三方账号

参照文档:申请第三方账号

1.3  绑定第三方账号

参照文档:绑定第三方账号到友盟后台

1.4  下载SDK

进入下载SDK页面(点击链接),勾选自己需要的功能进行下载

2.  申请第三方账号

2.1  为什么要申请第三方账号

进行分享、授权操作需要在第三方平台创建应用并提交审核,友盟默认提供了大多数平台的测试账号,但如果需要将分享、授权来源、分享到QQ、Qzone的icon更改为自己APP的应用,就需要自己申请第三方账号。

2.2  新浪微博

登录新浪微博开放平台(点击链接),填写相关应用信息并上传icon图片。注意修改安全域名为sns.whalecloud.com同时设置授权回调页为http://sns.whalecloud.com/sina2/callback安全域名设置在应用信息-->基本信息,具体位置参考下图

授权回调页、取消授权回调页设置在应用信息-->高级信息,具体位置参考下图

安全域名的修改需要二次审核通过才生效,授权回调页修改即时生效

2.3  微信

登录微信开放平台(点击链接),填写相关应用信息,审核通过后获取到微信AppID及AppSecret,如果需要微信登录功能,需要申请微信登录权限

2.4  QQ及Qzone

QQ及Qzone使用同一个AppID及Appkey,登录腾讯开放平台(点击链接) ,选择移动应用,填写相关应用信息并提交审核,未审核前通过只能使用测试账号,添加测试账号方法如下: 选择用户能力-->进阶社交能力-->应用调试者,添加测试账号必须在申请者好友列表中,如下图

2.5  人人网

登录人人开放平台(点击链接) ,填写相关应用信息,同时填写应用根域名为sns.whalecloud.com具体位置: 基本信息-->应用根域名 如图

2.6  豆瓣

登录豆瓣开放平台(点击链接),创建应用并填写相关应用信息,注意权限必须选择广播,同时填写回调地址为http://sns.whalecloud.com/douban/callback

3.  绑定第三方账号到友盟后台

目前需要在友盟后台绑定的第三方账号为:新浪微博、腾讯微博、人人网、豆瓣、Qzone,其余平台如微信、QQ直接在代码中设置

绑定地址:http://umeng.com/apps

登录友盟网站->左上角选择你们的产品->组件->社会化组件->设置

3.1  短链接开关

短链接开关只对新浪微博、腾讯微博、人人网、豆瓣四个平台有效,开启短链接开关,分享文案中附加的链接会被转码,同时可以统计到分享回流率(点击链接的次数),关闭短链接开关则无法统计,短链接开关默认为关闭状态

3.2  文字截断开关

文字截断开关只对新浪微博、腾讯微博、人人网、豆瓣四个平台有效,同时只对使用自定义分享编辑页或没有分享编辑页用户有效,当分享文案超出字数限制时自动截断,开关状态默认关闭

4.  U-Share SDK集成

1.1  手动集成

1.1.1  下载U-Share SDK

通过iOS社会化组件下载页面选择所需的社交平台后进行下载。

1.1.1.1  SDK目录介绍

1. Document    - U-Share SDK文档

2. UMSocialDemo - U-Share SDK Demo(如点选下载)

3. UMSocial    - U-Share SDK核心目录

UMSocialSDK      - U-Share SDK核心framework

UMSocialUI        - U-Share 分享UI资源、分享面板等

SocialLibraries  - 所选择下载的第三方平台SDK及U-Share链接库

1.1.2  加入U-Share SDK

1.1.2.1  将U-Share SDK添加到工程

1.1.2.2  添加项目配置

在Other Linker Flags加入-ObjC  如果objc    ---  一般这个不用进行更改。

1.1.2.3  加入依赖系统库

加入以下系统库

libsqlite3.tbd

1.1.2.4  添加平台相应的依赖库

根据集成的不同平台加入相关的依赖库,未列出平台则不用添加 添加方式:选中项目Target -> Linked Frameworks and Libraries列表中添加

平台依赖系统库

微信

SystemConfiguration.framework

CoreTelephony.framework

libsqlite3.tbd

libc++.tbd

libz.tbd

QQ

SystemConfiguration.framework

libc++.tbd

新浪微博

SystemConfiguration.framework

CoreTelephony.framework

ImageIO.framework

libsqlite3.tbd

libz.tbd

Twitter 

CoreData.framework

注:Twitter平台加入后需添加TwitterKit.framework/Resources/TwitterKitResources.bundle。

1.2  通过Cocoapods集成

1.2.1  平台配置

Cocoapods已经升级到1.0以上版本,下面的集成说明使用1.0版语法,如需参考0.x版语法,仅删除以下代码即可

target'工程target名称'doend

Cocoapods集成U-Share SDK可在Podfile中灵活配置,如工程target名为UMSocialDemo,可选添加以下代码:

target'UMSocialDemo'do

http://dev.umeng.com/social/ios/quick-integration#1_2 找不到需要的可以去友盟三方pod看一下

# U-Share SDK UI模块(分享面板,建议添加)

# 集成微信(完整版14.4M)

pod ‘UMengUShare/Social/WeChat'# 集成QQ(精简版0.5M)pod ‘UMengUShare/Social/ReducedQQ'

# 集成QQ(完整版7.6M)

pod ‘UMengUShare/Social/QQ'# 集成新浪微博(精简版1M)pod ‘UMengUShare/Social/ReducedSina'

# 集成新浪微博(完整版25.3M)

pod ‘UMengUShare/Social/Sina'# 集成Facebook/Messengerpod ‘UMengUShare/Social/Facebook'

# 集成Twitter

pod ‘UMengUShare/Social/Twitter'# 集成支付宝pod ‘UMengUShare/Social/AlipayShare'

# 集成钉钉

pod ‘UMengUShare/Social/DingDing'# 集成豆瓣pod ‘UMengUShare/Social/Douban'

# 集成人人

pod ‘UMengUShare/Social/Renren'# 集成腾讯微博pod ‘UMengUShare/Social/TencentWeibo'

# 集成来往(点点虫)

pod ‘UMengUShare/Social/LaiWang'# 集成易信pod ‘UMengUShare/Social/YiXin'

# 集成领英

pod ‘UMengUShare/Social/Linkedin'# 集成Flickrpod ‘UMengUShare/Social/Flickr'

# 集成Kakao

pod ‘UMengUShare/Social/Kakao'# 集成Tumblrpod ‘UMengUShare/Social/Tumblr'

# 集成Pinterest

pod ‘UMengUShare/Social/Pinterest'# 集成Instagrampod ‘UMengUShare/Social/Instagram'

# 集成Line

pod ‘UMengUShare/Social/Line'# 集成WhatsApppod ‘UMengUShare/Social/WhatsApp'

# 集成有道云笔记

pod ‘UMengUShare/Social/YouDao'# 集成印象笔记pod ‘UMengUShare/Social/EverNote'

# 集成Google+

pod ‘UMengUShare/Social/GooglePlus'# 集成Pocketpod ‘UMengUShare/Social/Pocket'

# 集成DropBox

pod ‘UMengUShare/Social/DropBox'# 集成VKontaktepod ‘UMengUShare/Social/VKontakte'

# 集成邮件

pod ‘UMengUShare/Social/Email'# 集成短信pod ‘UMengUShare/Social/SMS'

# 加入IDFA获取

pod ‘UMengUShare/Plugin/IDFA'end

新增加Cocoapods集成命令U-Share时直接使用pod update更新,不可加入--no-repo-update参数,需直接更新线上Cocoapods库。

1.2.2  微信、微博及QQ集成示例

若需集成微信、微博和QQ平台,可用以下Podfile配置

target'UMSocialDemo'do# U-Share SDK UI模块(分享面板,建议添加)pod ‘UMengUShare/UI’# 集成新浪微博pod ‘UMengUShare/Social/Sina'

# 集成微信

pod ‘UMengUShare/Social/WeChat'# 集成QQpod ‘UMengUShare/Social/QQ'

end

1.2.3  其他

若需要添加所有平台,只需添加以下代码:

target'UMSocialDemo'dopod ‘UMengUShare/Socialend

添加所有平台会增加应用体积,不建议使用,可用于测试

注:因为本次更新变更了cocoapods库,请使用pod update更新,不要带--no-repo-update参数,由于cocoapods库网络原因,更新时间较长,请耐心等待。

2.  U-Share SDK平台配置

从这一步骤就开始需要第三方appKey和appSecret等信息,可参考第三方账号申请及绑定申请所需的平台账号。

2.1  配置各平台URL Scheme

2.1.1  添加URL Types

URL Scheme是通过系统找到并跳转对应app的一类设置,通过向项目中的info.plist文件中加入URL types可使用第三方平台所注册的appkey信息向系统注册你的app,当跳转到第三方应用授权或分享后,可直接跳转回你的app。

添加URL Types有如下几处,都可进行设置

通过工程设置面板

通过info.plist文件编辑

直接编辑info.plist中XML代码

2.1.2  配置第三方平台URL Scheme


参考链接:添加URL Types

2.2  适配iOS9/10系统  里面 有应用跳转的配置

iOS9系统后Apple对HTTP请求及访问外部应用做了更加严格的要求,包括HTTP白名单、跳转第三方应用白名单等,具体设置第三方平台参数请参照适配iOS9/10系统

这个是我的适配sso跳转和HTTPS传输安全,可以看一下。

这个太多了,就这样的对着官方文档直接复制放上来就行了  

HTTPS传输安全

https传输安全     图 1 头


https传输安全    图 1 尾

sso跳转  


其实这个和官方文档是一样的,放在info里面就行了


5.  调用U-Share SDK

1.1  初始化设置

1.1.1  初始化U-Share及第三方平台

#import <UMSocialCore/UMSocialCore.h>

- (BOOL)application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions {

//打开调试日志

[[UMSocialManager defaultManager] openLog:YES];

//设置友盟appkey

[[UMSocialManager defaultManager] setUmSocialAppkey:@"57b432afe0f55a9832001a0a"];

// 获取友盟social版本号

//NSLog(@"UMeng social version: %@", [UMSocialGlobal umSocialSDKVersion]);

//设置微信的appKey和appSecret

[[UMSocialManager defaultManager] setPlaform:UMSocialPlatformType_WechatSession appKey:@"wxdc1e388c3822c80b"appSecret:@"3baf1193c85774b3fd9d18447d76cab0"redirectURL:@"http://mobile.umeng.com/social"];

//设置分享到QQ互联的appKey和appSecret

[[UMSocialManager defaultManager] setPlaform:UMSocialPlatformType_QQ appKey:@"100424468"appSecret:nilredirectURL:@"http://mobile.umeng.com/social"];

//设置新浪的appKey和appSecret

[[UMSocialManager defaultManager] setPlaform:UMSocialPlatformType_Sina appKey:@"3921700954"appSecret:@"04b48b094faeb16683c32669824ebdad"redirectURL:@"http://sns.whalecloud.com/sina2/callback"];

//支付宝的appKey

[[UMSocialManager defaultManager] setPlaform: UMSocialPlatformType_AlipaySession appKey:@"2015111700822536"appSecret:nilredirectURL:@"http://mobile.umeng.com/social"];

//设置易信的appKey

[[UMSocialManager defaultManager] setPlaform: UMSocialPlatformType_YixinSession appKey:@"yx35664bdff4db42c2b7be1e29390c1a06"appSecret:nilredirectURL:@"http://mobile.umeng.com/social"];

//设置点点虫(原来往)的appKey和appSecret

[[UMSocialManager defaultManager] setPlaform: UMSocialPlatformType_LaiWangSession appKey:@"8112117817424282305"appSecret:@"9996ed5039e641658de7b83345fee6c9"redirectURL:@"http://mobile.umeng.com/social"];

//设置领英的appKey和appSecret

[[UMSocialManager defaultManager] setPlaform:UMSocialPlatformType_Linkedin appKey:@"81t5eiem37d2sc"appSecret:@"7dgUXPLH8kA8WHMV"redirectURL:@"https://api.linkedin.com/v1/people"];

//设置Twitter的appKey和appSecret

[[UMSocialManager defaultManager] setPlaform:UMSocialPlatformType_Twitter appKey:@"fB5tvRpna1CKK97xZUslbxiet"appSecret:@"YcbSvseLIwZ4hZg9YmgJPP5uWzd4zr6BpBKGZhf07zzh3oj62K"redirectURL:nil];

// 如果不想显示平台下的某些类型,可用以下接口设置//   

[[UMSocialManager defaultManager] removePlatformProviderWithPlatformTypes:@[@(UMSocialPlatformType_WechatFavorite),@(UMSocialPlatformType_YixinTimeLine),@(UMSocialPlatformType_LaiWangTimeLine),@(UMSocialPlatformType_Qzone)]];...returnYES;}


3.1.2  设置系统回调

// 支持所有iOS系统

- (BOOL)application:(UIApplication*)application openURL:(NSURL*)url sourceApplication:(NSString*)sourceApplication annotation:(id)annotation

{

           BOOLresult = [[UMSocialManager defaultManager] handleOpenURL:url];

          if(!result){

                 // 其他如支付等SDK的回调

            }

          returnresult;

}

注:以上为建议使用的系统openURL回调,还有以下两种回调方式,如果开发者选取以下回调,也请补充相应的函数调用。

仅支持iOS9以上系统,iOS8及以下系统不会回调

- (BOOL)application:(UIApplication*)app openURL:(NSURL*)url options:(NSDictionary *)options{BOOLresult = [[UMSocialManager defaultManager] handleOpenURL:url];if(!result) {// 其他如支付等SDK的回调}returnresult;}

2.支持目前所有iOS系统

- (BOOL)application:(UIApplication*)application handleOpenURL:(NSURL*)url{BOOLresult = [[UMSocialManager defaultManager] handleOpenURL:url];if(!result) {// 其他如支付等SDK的回调}returnresult;}

3.2  第三方平台授权

1.登录

//预定义的平台

UMSocialPlatformType_Predefine_Begin= -1,

UMSocialPlatformType_Sina=0,//新浪

UMSocialPlatformType_WechatSession=1,//微信聊天

UMSocialPlatformType_WechatTimeLine=2,//微信朋友圈

UMSocialPlatformType_WechatFavorite=3,//微信收藏

UMSocialPlatformType_QQ=4,//QQ聊天页面

UMSocialPlatformType_Qzone=5,//qq空间

UMSocialPlatformType_TencentWb=6,//腾讯微博

UMSocialPlatformType_AlipaySession=7,//支付宝聊天页面

UMSocialPlatformType_YixinSession=8,//易信聊天页面

UMSocialPlatformType_YixinTimeLine=9,//易信朋友圈

UMSocialPlatformType_YixinFavorite=10,//易信收藏

UMSocialPlatformType_LaiWangSession=11,//点点虫(原来往)聊天页面

UMSocialPlatformType_LaiWangTimeLine=12,//点点虫动态

UMSocialPlatformType_Sms=13,//短信

UMSocialPlatformType_Email=14,//邮件

UMSocialPlatformType_Renren=15,//人人

UMSocialPlatformType_Facebook=16,//Facebook

UMSocialPlatformType_Twitter=17,//Twitter

UMSocialPlatformType_Douban=18,//豆瓣

UMSocialPlatformType_KakaoTalk=19,//KakaoTalk(暂未支持)

UMSocialPlatformType_Pinterest=20,//Pinterest(暂未支持)

UMSocialPlatformType_Line=21,//Line

UMSocialPlatformType_Linkedin=22,//领英

UMSocialPlatformType_Flickr=23,//Flickr

UMSocialPlatformType_Tumblr=24,//Tumblr(暂未支持)

UMSocialPlatformType_Instagram=25,//Instagram

UMSocialPlatformType_Whatsapp=26,//Whatsapp

UMSocialPlatformType_Predefine_end=999,

//用户自定义的平台

UMSocialPlatformType_UserDefine_Begin =1000,

UMSocialPlatformType_UserDefine_End =2000,

2.授权登录

[[UMSocialManager defaultManager] getUserInfoWithPlatform:UMSocialPlatformType_QQ currentViewController:nil  completion:^(id result,NSError *error) {

if(error) {

}else{

UMSocialUserInfoResponse*resp = result;

//授权信息

NSLog(@"QQ uid: %@", resp.uid);

NSLog(@"QQ openid: %@", resp.openid);

NSLog(@"QQ accessToken: %@", resp.accessToken);

NSLog(@"QQ expiration: %@", resp.expiration);

//用户信息

NSLog(@"QQ name: %@", resp.name);

NSLog(@"QQ iconurl: %@", resp.iconurl);

NSLog(@"QQ gender: %@", resp.gender);

//第三方平台SDK源数据

NSLog(@"QQ originalResponse: %@", resp.originalResponse);

[selfRequestLogin:respLoginType:@"qq"];

}

}];


新浪分享 url  是拼接在title 的后面  切记

1.1  新浪分享

UMSocialMessageObject*messageObject = [UMSocialMessageObjectmessageObject];

//设置文本

messageObject.text= [NSStringstringWithFormat:@"%@,%@",titleName,strFullUrl];

//创建图片内容对象

UMShareImageObject*shareObject = [[UMShareImageObjectalloc]init];

//如果有缩略图,则设置缩略图

shareObject.shareImage=self.UMimageView.image;

//分享消息对象设置分享内容对象

messageObject.shareObject= shareObject;

[[UMSocialManagerdefaultManager]shareToPlatform:platformTypemessageObject:messageObjectcurrentViewController:selfcompletion:^(idresult,NSError*error) {

if(error) {

UMSocialLogInfo(@"************Share fail with error %@*********",error);

}else{

if([resultisKindOfClass:[UMSocialShareResponseclass]]) {

UMSocialShareResponse*resp = result;

//分享结果消息

UMSocialLogInfo(@"response message is %@",resp.message);

//第三方原始返回的数据

UMSocialLogInfo(@"response originalResponse data is %@",resp.originalResponse);

}else{

UMSocialLogInfo(@"response data is %@",result);

}

}

}];

2。QQ、QQ空间、微信、朋友圈等分享可以用这个方法,其他的分享参考官方文档或者是平台接受分享的规则

UMSocialMessageObject*messageObject = [UMSocialMessageObject messageObject];

UMShareWebpageObject*shareObject = [UMShareWebpageObject shareObjectWithTitle:titleNamedescr:nil thumImage:self.UMimageView.image];

shareObject.webpageUrl= strFullUrl;

//分享消息对象设置分享内容对象

messageObject.shareObject= shareObject;

[[UMSocialManagerdefaultManager]shareToPlatform:platformTypemessageObject:messageObjectcurrentViewController:selfcompletion:^(idresult,NSError*error) {

if(error) {

UMSocialLogInfo(@"************Share fail with error %@*********",error);

}else{

if([resultisKindOfClass:[UMSocialShareResponseclass]]) {

UMSocialShareResponse*resp = result;

//分享结果消息

UMSocialLogInfo(@"response message is %@",resp.message);

//第三方原始返回的数据

UMSocialLogInfo(@"response originalResponse data is %@",resp.originalResponse);

}else{

UMSocialLogInfo(@"response data is %@",result);

}

}

}];

推荐阅读更多精彩内容