iOS 集成友盟分享、登录、统计 二

2018-10-09  本文已影响137人  90后的思维

15.申请第三方账号,登录新浪微博开放平台(点击链接)

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

点击链接

Snip20160831_146.png

移动应用

Snip20160831_153.png

立即接入

Snip20160831_154.png

创建新应用

Snip20160831_155.png

基本信息

Snip20160831_171.png

高级信息

Snip20160831_168.png

我的应用

Snip20160831_170.png

16.配置URL schemes (使用友盟社会化组件的微博SSO功能,需要按照文档要求在xcode设置url scheme)

Snip20160831_172.png

17.应用跳转(SSO等)

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

同样在info.plist增加:

LSApplicationQueriesSchemeswechatweixinsinaweibohdsinaweibosinaweibossoweibosdkweibosdk2.5mqqapimqqmqqOpensdkSSoLoginmqqconnectmqqopensdkdatalinemqqopensdkgrouptribesharemqqopensdkfriendmqqopensdkapimqqopensdkapiV2mqqopensdkapiV3mqzoneopensdkwtloginmqqwtloginmqq2mqqwpamqzonemqzonev2mqzonesharewtloginqzonemqzonewxmqzoneopensdkapiV2mqzoneopensdkapi19mqzoneopensdkapimqqbrowsermttbrowseralipayalipaysharerenreniosrenrenapirenrenrenreniphonelaiwangssoyixinyixinopenapiinstagramwhatsapplinefbapifb-messenger-apifbauth2fbshareextension

18.设置友盟Appkey

#import"UMSocial.h"// 友盟的基本授权[UMSocialData setAppKey:@"57c5128467e58e23f5003d16"];// 处理分享错误[UMSocialData openLog:YES];

Snip20160831_173.png

19 .配置新浪微博Appkey(不是友盟Appkey)

//第一个参数为新浪appkey,第二个参数为新浪secret,第三个参数是新浪微博回调地址,这里必须要和你在新浪微博后台设置的回调地址一致。[UMSocialSinaSSOHandler openNewSinaSSOWithAppKey:@"987580732"secret:@"433c734aeb2660e10e4f97f10ace9481"RedirectURL:@"http://sns.whalecloud.com/sina2/callback"];

Snip20160831_176.png

20.添加系统回调方法

- (BOOL)application:(UIApplication*)application openURL:(NSURL*)url sourceApplication:(NSString*)sourceApplication annotation:(id)annotation{BOOLresult = [UMSocialSnsService handleOpenURL:url];if(result ==FALSE) {//调用其他SDK,例如支付宝SDK等}else{NSLog(@"分享成功");            }returnresult;}

Snip20160831_177.png

21.设置分享的内容

Snip20160831_178.png

演示

101.64.gif

(友盟分享四)利用友盟单独集成QQ和QQ空间

1.登录友盟

2.点击U-Share

Snip20160830_66.png

3.点击SDK及文档,选择苹果设备

Snip20160830_67.png

4.点击SDK下载

Snip20160830_69.png

5.选择你需要的版本,进行下载

Snip20160830_71.png

6.然后利用CocoaPods集成或手动集成,我们采取手动集成,CocoaPods集成简单。

Snip20160830_89.png

7.创建xcode项目文件

8.1解压SDK压缩包,将形如UMSocial_Sdk_Extra_Frameworks

目录下的TencentOpenAPI文件夹拖到工程中

Snip20160830_128.png

8.2解压SDK压缩包,将形如UMSocial_Sdk_x.x.x的文件夹拖入工程目录:

Snip20160830_129.png

9.添加SDK依赖的系统库文件

Snip20160830_130.png

10.登录友盟

Snip20160830_74.png

11.找到U-Share,然后选择立即使用

Snip20160830_76.png

12.选择添加新应用

Snip20160830_132.png

13.填写应用基本信息。目的:获取AppKey

Snip20160830_133.png

14.获取了CoderZb-QQandZone应用对应的唯一的AppKey

Snip20160830_134.png

15.申请第三方账号,即腾讯开放平台(点击链接),选择移动应用,填写相关应用信息并提交审核。

Snip20160901_200.png

Snip20160901_199.png

Snip20160901_196.png

Snip20160901_197.png

经过一天的时间,终于审核通过了

Snip20160901_253.png

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

LSApplicationQueriesSchemeswechatweixinsinaweibohdsinaweibosinaweibossoweibosdkweibosdk2.5mqqapimqqmqqOpensdkSSoLoginmqqconnectmqqopensdkdatalinemqqopensdkgrouptribesharemqqopensdkfriendmqqopensdkapimqqopensdkapiV2mqqopensdkapiV3mqzoneopensdkwtloginmqqwtloginmqq2mqqwpamqzonemqzonev2mqzonesharewtloginqzonemqzonewxmqzoneopensdkapiV2mqzoneopensdkapi19mqzoneopensdkapimqqbrowsermttbrowseralipayalipaysharerenreniosrenrenapirenrenrenreniphonelaiwangssoyixinyixinopenapiinstagramwhatsapplinefbapifb-messenger-apifbauth2fbshareextension

17.在Info.plist文件中配置如下属性

Snip20160830_139.png

18.配置URL schemes

Snip20160901_201.png

19.友盟的基本授权

// 友盟的基本授权[UMSocialData setAppKey:@"57c4e6aee0f55a5286001ec9"];// 处理分享错误[UMSocialData openLog:YES];

Snip20160830_142.png

20.添加QQ及Qzone到分享列表

#import"UMSocialQQHandler.h"// 在AppDelegate应用入口方法打开集成手机QQ、Qzone开关[UMSocialQQHandler setQQWithAppId:@"1105588839"appKey:@"zuryj7sDwQW55x3Y"url:@"http://www.umeng.com/social"];

Snip20160901_202.png

21.添加系统回调方法

- (BOOL)application:(UIApplication*)application openURL:(NSURL*)url sourceApplication:(NSString*)sourceApplication annotation:(id)annotation{BOOLresult = [UMSocialSnsService handleOpenURL:url];if(result ==FALSE) {//调用其他SDK,例如支付宝SDK等}else{NSLog(@"分享成功");            }returnresult;}

Snip20160901_203.png

22.设置分享的内容

#import"UMSocialData.h"#import"UMSocialSnsService.h"-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent*)event{//如果需要分享回调,请将delegate对象设置self,并实现下面的回调方法// shareToSnsNames:设置为nil,会把所有的分享平台显示出来。[UMSocialData defaultData].extConfig.title =@"分享的title";    [UMSocialData defaultData].extConfig.qqData.url =@"http://baidu.com";[UMSocialData defaultData].extConfig.qzoneData.url =@"http://baidu.com";    [UMSocialSnsService presentSnsIconSheetView:selfappKey:@"57c5480de0f55a8c5b001f32"shareText:@"友盟社会化分享让您快速实现分享等社会化功能,http://umeng.com/social"shareImage:[UIImageimageNamed:@"icon"]                                shareToSnsNames:nildelegate:nil];UIView*view = [[UIViewalloc]init];    view.frame =CGRectMake(100,150,200,200);    view.backgroundColor = [UIColorredColor];    [self.view addSubview:view];        }

Snip20160901_204.png

效果

分享到qq好友

101.78.gif

分享到qq空间

101.79.gif

[分享-LS](https://pan.baidu.com/s/1qYamWXm密码 fw2d)

注意:

1.提示这个警告是,你在友盟里面友盟其他的api时,先得使用友盟的appkey

**Umeng SocialSDK --- You haven'tsetthe Umeng Appkey,please use [UMSocialData setAppKey:@"507fcab25270157b37000010"]; before you use other APIs.**

2.由于iOS9引入了AppTransportSecurity(ATS)特性,要求App访问的网络使用HTTPS协议,如果不做特殊设置,http请求会失败,所以需要开发者在工程中增加设置以便可以发送http请求

拓展1:OAuth2.0和SSO授权的区分

-OAuth2.0:

一种安全的登陆协议,用户的账户密码不提交到本APP,而是提交到授权服务器,待服务器确认后,返回本APP一个访问令牌,本APP即可用该访问令牌访问资源服务器的资源。由于用户的账号密码并不与本APP直接交互,而是与官方服务器交互,因而它是安全的。

SSO

全称:Single Sign On,用户只需登陆一次即可访问相互信任的子系统。用户访问系统1时,登陆成功后会返回一个ticket,当用户访问系统2时,会把ticket带上,待验证合法后即可访问系统2。听起来跟cookie有点像,没错,Web-SSO便有基于cookie的实现方案。

以新浪微博为例,很多手机APP在点击新浪授权时,会跳到新浪客户端的登陆页面,这里就用到SSO技术啦。在本APP授权新浪微博时,会先检测手机是否安装了新浪微博客户端。

拓展2:

URL Scheme

为方便app之间互相调用而设计的。你可以通过一个类似URL的链接,通过系统的OpenURl来打开该app,并可以传递一些参数。每个URL必须能唯一标识一个APP,如果你设置的URL与别的APP的URL冲突,此时,你的APP不一定会被调用起来,原因是当APP在安装的时候就已经在系统里面注册了此APP的URL Scheme,如果你的一致但是是后安装的,那么系统不会调用你的APP,因为你的APP设置的URL scheme被覆盖了。

当然系统的APP的URL Scheme是优先级高的,不用想着能覆盖系统APP的URL Scheme的注册调用。

URL Scheme有什么作用:

iOS系统里面APP之间是相互隔离的,不像Android,每个组件都可以作为一个独立的功能被其他APP调用,但是,IOS系统里面也需要完成类似于三方功能如支付、搜索跳转、导航等等跨APP的功能,怎么实现呢,苹果就使用了URL Scheme来实现了这个功能。通过各个APP设计的符合苹果的统一规范的URL Scheme,系统就会自动去调用相关的APP来完成你的请求。

比如:我们的APP需要使用支付宝的三方支付功能、我的APP需要使用微信分享好的文章,那么此时就可以通过URL Scheme来传递这些数据到支付宝APP或者微信APP,系统会通过这些APP的URL Scheme来调起这些APP,完成你所需要做的跨APP的功能。

(友盟登录)

注:相比于友盟分享三的代码,仅仅增加了增加了/******/中的内容,所以要集成友盟登录,必须先写友盟分享3的代码

AppDelegate.m文件

#import"AppDelegate.h"#import"UMSocial.h"#import"UMSocialSinaSSOHandler.h"@interfaceAppDelegate()@end@implementationAppDelegate- (BOOL)application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions {// 友盟的基本授权[UMSocialData setAppKey:@"57c5128467e58e23f5003d16"];// 处理分享错误[UMSocialData openLog:YES];//第一个参数为新浪appkey,第二个参数为新浪secret,第三个参数是新浪微博回调地址,这里必须要和你在新浪微博后台设置的回调地址一致。[UMSocialSinaSSOHandler openNewSinaSSOWithAppKey:@"987580732"secret:@"433c734aeb2660e10e4f97f10ace9481"RedirectURL:@"http://sns.whalecloud.com/sina2/callback"];returnYES;}- (BOOL)application:(UIApplication*)application openURL:(NSURL*)url sourceApplication:(NSString*)sourceApplication annotation:(id)annotation{BOOLresult = [UMSocialSnsService handleOpenURL:url];if(result ==FALSE) {//调用其他SDK,例如支付宝SDK等}else{NSLog(@"分享成功");            }returnresult;}@end

ViewController.m文件

#import"ViewController.h"#import"UMSocialData.h"#import"UMSocialSnsService.h"#import"UMSocial.h"@interfaceViewController()@end@implementationViewController- (void)viewDidLoad {    [superviewDidLoad];   }-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent*)event{//如果需要分享回调,请将delegate对象设置self,并实现下面的回调方法// shareToSnsNames:设置为nil,会把所有的分享平台显示出来。[UMSocialData defaultData].extConfig.title =@"分享的title";    [UMSocialData defaultData].extConfig.qqData.url =@"http://baidu.com";    [UMSocialSnsService presentSnsIconSheetView:selfappKey:@"57c5480de0f55a8c5b001f32"shareText:@"友盟社会化分享让您快速实现分享等社会化功能,http://umeng.com/social"shareImage:[UIImageimageNamed:@"icon"]                                shareToSnsNames:nildelegate:nil];UIView*view = [[UIViewalloc]init];    view.frame =CGRectMake(100,150,200,200);    view.backgroundColor = [UIColorredColor];    [self.view addSubview:view];/**************************************************************************************/UMSocialSnsPlatform *snsPlatform = [UMSocialSnsPlatformManager getSocialPlatformWithName:UMShareToSina];        snsPlatform.loginClickHandler(self,[UMSocialControllerService defaultControllerService],YES,^(UMSocialResponseEntity *response){//          获取微博用户名、uid、token等if(response.responseCode == UMSResponseCodeSuccess) {NSDictionary*dict = [UMSocialAccountManager socialAccountDictionary];            UMSocialAccountEntity *snsAccount = [[UMSocialAccountManager socialAccountDictionary] valueForKey:snsPlatform.platformName];NSLog(@"\nusername = %@,\n usid = %@,\n token = %@ iconUrl = %@,\n unionId = %@,\n thirdPlatformUserProfile = %@,\n thirdPlatformResponse = %@ \n, message = %@",snsAccount.userName,snsAccount.usid,snsAccount.accessToken,snsAccount.iconURL, snsAccount.unionId, response.thirdPlatformUserProfile, response.thirdPlatformResponse, response.message);                    }});/**************************************************************************************/}@end运行结果

101.65.gif

[LS](https://pan.baidu.com/s/1mii2Bs0密码 dqh2)

(友盟统计)

1.登录友盟

2.点击U-App

3.选择SDK及文档

Snip20160901_206.png

Snip20160901_213.png

4.点击步骤2中的立即使用

Snip20160901_207.png

5.添加新应用

Snip20160901_208.png

6.填写应用基本信息

Snip20160901_209.png

7.获取CoderZb-Statistics对应的唯一的AppKey

Snip20160901_210.png

8.回到步骤3,选择下载统计SDK

Snip20160901_212.png

Snip20160901_214.png

9.创建xocde项目

10.导入sdk

Snip20160901_216.png

11..添加友盟统计需要的framework

Snip20160901_217.png

12.配置AppDelegate.m文件

#import"UMMobClick/MobClick.h"UMConfigInstance.appKey = @"57c7854867e58e4dc6000fc0";    UMConfigInstance.channelId = @"App Store";    UMConfigInstance.eSType = E_UM_GAME;//仅适用于游戏场景,应用统计不用设置[MobClick startWithConfigure:UMConfigInstance];//配置以上参数后调用此方法初始化SDK!

Snip20160901_218.png

13.设置发送策略为启动app就发送.

如果不设置为BATCH,则发送到后台进行统计的时间不是确定的[已验证]

UMConfigInstance.ePolicy = BATCH;// 启动app就发送

101.68.gif

14.页面的统计

#import- (void)viewWillAppear:(BOOL)animated{    [superviewWillAppear:animated];    [MobClick beginLogPageView:@"PageOne"];//("PageOne"为页面名称,可自定义)}- (void)viewWillDisappear:(BOOL)animated{    [superviewWillDisappear:animated];    [MobClick endLogPageView:@"PageOne"];}

Snip20160901_230.png

15.添加事件

添加计数事件

Snip20160901_220.png

Snip20160901_222.png

Snip20160901_223.png

添加计算事件

Snip20160901_225.png

Snip20160901_227.png

16.xcode中实现计数事件和计算事件

#import-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent*)event{NSLog(@"要在这个界面统计");// 计数事件[MobClick event:@"touch"];// 计算事件[MobClick event:@"Calcu"attributes:@{@"book":@"Swift Fundamentals"} counter:110];}

Snip20160901_229.png

17.开启日志(例如查看计数事件,计算事件页面的统计的日志)

// 开启日志查看。如果不设置,在xocde控制台将不会输出日志内容(内容包括计数事件,页面的统计)[MobClick setLogEnabled:YES];

101.69.gif

18.在友盟后台查看计数事件和计算事件

101.70.gif

19.集成测试

Snip20160901_236.png

注册测试设备

Snip20160901_241.png

复制代码到xcode中。目的:获得打印出的内容,然后粘贴到"设备识别信息选项"

Snip20160901_243.png

获取设备识别信息选项(一定要真机运行xcode项目)

Class cls =NSClassFromString(@"UMANUtil");    SEL deviceIDSelector =@selector(openUDIDString);NSString*deviceID =nil;if(cls && [cls respondsToSelector:deviceIDSelector]){        deviceID = [cls performSelector:deviceIDSelector];    }NSData* jsonData = [NSJSONSerializationdataWithJSONObject:@{@"oid": deviceID}                                                   options:NSJSONWritingPrettyPrintederror:nil];NSLog(@"%@", [[NSStringalloc] initWithData:jsonData encoding:NSUTF8StringEncoding]);

Snip20160901_250.png

确定

Snip20160901_252.png

创建成功

Snip20160901_248.png

20.开启实时发送

UMConfigInstance.ePolicy = REALTIME;//实时发送  只在“集成测试”设备的DEBUG模式下有效

Snip20160901_249.png

21.运行到真机设备中,并在友盟后台的集成测试选项卡中查看

上一篇下一篇

猜你喜欢

热点阅读