社交分享和应用间跳转

#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
特点:
  1. 只能垂直或水平散列,因此不能完全取代Autolayout
  2. 能够快速的按顺序获取到子控件
  3. 批量修改间距加快
  4. 批量修改对其方式更快
内部的控件不需要进行约束,只有最外层的stackView需要约束
 
应用场景
1.水平 — 标签 / 自定义Tabar
2.垂直 — 设置菜单
 
 
 
 
 
 
 
 
posted @ 2016-05-31 17:20  任淏  阅读(795)  评论(0编辑  收藏  举报