• 社交分享和应用间跳转


    #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.垂直 — 设置菜单
     
     
     
     
     
     
     
     
  • 相关阅读:
    (五)Hibernate 操作对象
    (四)关联关系一对多映射
    (三)映射对象标识符(OID)
    随机取数据
    Delphi的时间处理
    调用MYSQL存储过程实例
    php接收数据
    NodeJS入门
    idHTTP访问百度
    delphi 从TWebBrowser WebBrowser得到全部html源码
  • 原文地址:https://www.cnblogs.com/r360/p/5546623.html
Copyright © 2020-2023  润新知