您的位置:首页 > 其它

社交分享和应用间跳转

2016-05-31 17:20 267 查看
#pragma mark - 三. 社交分享
˜
#pragma mark 1. 自带分享
1. 判断服务类型是否可用
2. 创建分享控制器 --> 设置文字/图片/网址
3. 模态视图弹出

#pragma mark 2. 友盟分享
1. 按文档集成

#pragma mark 3. SSO授权 - 手机有安装对应的第三方应用程序才能实现此功能
SSO指单点登录,当用户安装了对应第三方客户端且登录时,可以在登录时免去输入账号密码的过程
一. OAuth2.0 跟SSO 授权的流程区别

OAuth2.0 : 当前程序内加载一个网页 --> 网页中输入账号密码 --> 点击授权 --> 可以分享

SSO : 会跳转到对应的第三方程序 --> 点击授权 --> 可以分享

大平台一般会支持SSO授权, 因为用的人多. 其他的中小平台, 一般只有OAuth2.0授权

二. SSO授权的优势:
1. 方便 --> 账号密码不用输入 --> (密码太长, 输入错误, 遗忘密码)
2. 保护信息安全 --> 防止手机号, 或者常用密码泄露
3. 避免在任一环节的用户流失率 --> 产品经理非常喜欢

三. 应用场景
1. 分享
2. 第三方登录 --> 应该将用户数据注册成用户, 然后用户数据保存在服务器上

第三方登录主要用于简化用户登录流程,通过用户拥有的微博、QQ、微信等第三方账号进行登录并且构建APP自己的登录账号体系。

//1. 判断服务类型是否可用

if (![SLComposeViewController isAvailableForServiceType:SLServiceTypeSinaWeibo]) {

NSLog(@"还没有配置账号, 需要到设置中添加账号");

return;

};

//2. 创建分享控制器

SLComposeViewController *composeVC = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeSinaWeibo];

//2.1 文字

[composeVC setInitialText:@"世界上有10种人, 一种是懂二进制的, 一种是不懂二进制的"];

//2.2 图片

[composeVC addImage:[UIImage imageNamed:@"danshengou"]];

//2.3 网址

[composeVC addURL:[NSURL URLWithString:@"https://www.baidu.com"]];

//3. 模态视图弹出
[self presentViewController:composeVC animated:YES completion:nil];

友盟分享
社会化分享 —> SDK集成与下载 —>苹果 —> 最新的版本
查看Demo —>社会化分享 —> 点击检测

判断是否安装了微信客户端

1、在.m文件中到入头文件:#import "WXApi.h"

2、调用是否安装了微信的方法isWXAppInstalled:

if ([WXApi isWXAppInstalled]) {

NSLog(@"安装了");

}

依此类推其他的

(PS:此处的WXApi直接写就好,并不是通过WXApi创建的对象或者什么的)

我的产品 —> 添加 ——> 提交并获取Appkey

SSO授权

#pragma mark 点击屏幕进行分享
- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event

{

//如何让程序最下面的角标显示成自己的应用程序名, 以及点击后会跳到自己的网址

//1. 需要到对应的第三方平台注册开发者, 并且提交应用审核

//2. 审核成功后, 应该来到友盟的后台 (找到自己的程序,左侧的列表--> 社会化分享 --> 设置--> 填入对应的信息即可)

//注意:分享到微信好友、微信朋友圈、微信收藏、QQ空间、QQ好友、来往好友、来往朋友圈、易信好友、易信朋友圈、Facebook、Twitter、Instagram等平台需要参考各自的集成方法

[UMSocialSnsService presentSnsIconSheetView:self

appKey:@"563b01e867e58ef979001f0f"

shareText:@"刀哥, 我用了你的账号, 我错了"

shareImage:[UIImage imageNamed:@"icon.png"]

shareToSnsNames:[NSArray arrayWithObjects:UMShareToSina,UMShareToWechatSession,UMShareToQQ,UMShareToDouban, UMShareToEmail, UMShareToFacebook,nil]

delegate:nil];
}

#pragma mark 模拟新浪微博登录按钮
- (IBAction)loginClick:(id)sender {

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);

//可以在这里调用自己服务器的注册接口, 将获取到得信息注册成新用户

}});

}

#pragma mark 第三方登录成功后, 可以获取用户的相信信息
- (IBAction)onGetUserDataClick:(id)sender {

//获取accestoken以及新浪用户信息,得到的数据在回调Block对象形参respone的data属性

[[UMSocialDataService defaultDataService] requestSnsInformation:UMShareToSina completion:^(UMSocialResponseEntity *response){

NSLog(@"SnsInformation is %@",response.data);

}];
}

第三方账号申请及绑定

#pragma mark - 四. 应用间跳转

#pragma mark 1. 普通跳转(A应用跳转B应用)iOS9发生了变化
1. openURL / canOpenURL 方法跳转的时候, 增加了弹框, 提示用户, 要跳转到哪一个程序
2. canOpenURL方法, 增加了限制, 需要提前写好信任白名单LSApplicationQueriesSchemes Array , 添加键值. 最多可以添加50个白名单

Info —>



#pragma mark 点击屏幕跳转到微信
- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event

{

// iOS9新增变化

/**

1. openURL / canOpenURL 方法跳转的时候, 增加了弹框, 提示用户, 要跳转到哪一个程序

2. canOpenURL方法, 增加了限制, 需要提前写好信任白名单LSApplicationQueriesSchemes Array , 添加键值. 最多可以添加50个白名单

*/

/**

URL

协议头: http:// https:// ftp:// file://

路径: www.itcast.cn

*/

//06-新闻 想要打开 "07-微信" 这里根微信不是一个程序

//标准写法: 先判断能否打开, 如果能就跳转

if ([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"weixin://"]]) {

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"weixin://1234"]];

}
}

#pragma mark 2. 跳转到指定页面(A应用跳转B应用指定页面)
1. A新闻程序中拼接不同的网址
2. 微信程序中, 实现openURL方法, 然后判断是否包含了自定的字符串, 然后自己处理跳转到哪一个界面
- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString*, id> *)options NS_AVAILABLE_IOS(9_0)

{

//是否包含指定的关键字 URL字符串, 然后跳转到指定界面

//1. 获取根控制器 --> nav

UINavigationController *nav = (UINavigationController *)[UIApplication sharedApplication].keyWindow.rootViewController;

//2. 获取主控制器

UIViewController *mainVC = nav.childViewControllers[0];

//3. 回到根控制器

[nav popToRootViewControllerAnimated:YES];

//4. 根据字符串来跳转

if ([url.absoluteString containsString:@"session"]) {

//跳转到好友列表

[mainVC performSegueWithIdentifier:@"session" sender:nil];

} else if ([url.absoluteString containsString:@"timeline"]) {

[mainVC performSegueWithIdentifier:@"timeline" sender:nil];

}

return YES;
}

#pragma mark 3. 应用程序互相跳转(A应用跳转B应用,再跳转A应用)
1. 想要循环跳转, 不能使用canOpenURL方法
原因:



iOS 9 新特性介绍

一、 UIStackView
新控件:UIstackView 栈视图,类似AppleWatch的Group
父类:UIView
特点:

只能垂直或水平散列,因此不能完全取代Autolayout

能够快速的按顺序获取到子控件

批量修改间距加快

批量修改对其方式更快

内部的控件不需要进行约束,只有最外层的stackView需要约束

应用场景
1.水平 — 标签 / 自定义Tabar
2.垂直 — 设置菜单
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: