社交分享和应用间跳转

#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.垂直 — 设置菜单

时间: 2024-10-13 02:26:38

社交分享和应用间跳转的相关文章

应用程序间跳转 (友盟SSO 授权 与系统自带的分享)

应用程序间跳转的应用场景 使用第三方用户登录,如微信登录,返回用户名和密码 需要用户授权,返回到调用程序,同时返回授权的用户名 应用程序推广,跳转到itunes并显示指定app下载页 第三方支付,跳转到支付APP,如支付宝,微信钱包 显示位置及导航功能时,跳转到第三方地图应用. 打电话.发邮件.发短信.打开网页等,跳转到内置APP程序 应用间的跳转: 1.//url :统一资源占位符 http://baidu.com tel://110 file:///apple/storebock //由 

Spring MVC controller间跳转 重定向 传参 (转)

鸣谢:http://blog.sina.com.cn/s/blog_a85398ce0101f93x.html 1. 需求背景 需求:spring MVC框架controller间跳转,需重定向.有几种情况:不带参数跳转,带参数拼接url形式跳转,带参数不拼接参数跳转,页面也能显示. 2. 解决办法 需求有了肯定是解决办法了,一一解决,说明下spring的跳转方式很多很多,我这里只是说一些自我认为好用的,常用的,spring分装的一些类和方法. (1)我在后台一个controller跳转到另一个

Spring MVC controller间跳转 重定向 传参

1. 需求背景 需求:spring MVC框架controller间跳转,需重定向.有几种情况:不带参数跳转,带参数拼接url形式跳转,带参数不拼接参数跳转,页面也能显示. 2. 解决办法 需求有了肯定是解决办法了,一一解决,说明下spring的跳转方式很多很多,我这里只是说一些自我认为好用的,常用的,spring分装的一些类和方法. (1)我在后台一个controller跳转到另一个controller,为什么有这种需求呢,是这样的.我有一个列表页面,然后我会进行新增操作,新增在后台完成之后我

友盟社交分享中的那些坑

友盟社交分享中的那些坑 目前在做的产品,新版本需要支持社交分享,其实旧版本已经有了,但是被屏蔽了,本来再次打开也没什么,但是发现新的需求要多支持一个平台,而旧平台的sdk又太旧了(接口都改了),为了节约时间,就考虑友盟社交分享,文档说快速集成只要10分钟. 下面呢,咱来说下具体使用友盟分享遇到的一些问题 首先是 产品需求 为了避免大伙看大段的需求文档,咱精简出和本文相关的需求 分享到微信好友 分享到微信朋友圈 分享到qq空间 分享到新浪微博 分享图片+文字 分享视频+文字 分享纯文字 点击分享出

iOS社交分享Twitter、Facebook、复制到剪切板、LINE、及邮件

准备 首先要引进如下三个framework: MessageUI.framework Social.framework Accounts.framework 并在实现这几个方法的地方引入以下几个头文件 #import <MessageUI/MFMailComposeViewController.h> #import <Social/Social.h> #import <Accounts/Accounts.h> Twitter及Facebook 其中urlStr为我分享的

springmvc controller间跳转 重定向 传参

1. 需求背景 需求:spring MVC框架controller间跳转,需重定向.有几种情况:不带参数跳转,带参数拼接url形式跳转,带参数不拼接参数跳转,页面也能显示. 本来以为挺简单的一件事情,并且个人认为比较常用的一种方式,一百度全都有了,这些根本不是问题,但是一百度居然出乎我的意料,一堆都不是我想要的结果.无奈啊,自己写一篇比较全都供以后大家一百度吧,哈哈哈...是这些写的不是很全都人们给了我写这篇博客的动力. 2. 解决办法 需求有了肯定是解决办法了,一一解决,说明下spring的跳

不同storyboard间跳转

小项目中用到storyboard,可以按照模块来新建多个sb. 以下是代码实现跳转实现: UIStoryboard *anSb=[UIStoryboard storyboardWithName:@"Another" bundle:nil]; AppDelegate *appDelagate=[UIApplication sharedApplication].delegate; appDelagate.window.rootViewController=[anSb instantiate

iOS页面间跳转的性能优化(二)

续言 在页面间跳转的性能优化(一)中介绍了一些基础知识,讲述了情形一与情形二的优化方式及原理,但有许多人对情形二最后两种处理方式的原理表示不理解,不清楚处理过程,接下来会详细分步地讲述这两种方式的原理,如果你还没看过页面间跳转的性能优化(一),请先阅读. 点击下载Demo,或https://github.com/IOSDelpan/SmoothTransitionDemo. 页面间的跳转大致分为几个任务:1.生成将即显示的页面视图:2.生成我们所需要的UI元素:3.生成页面跳转的动画:而这几个任

Spring mvc框架 controller间跳转 ,重定向 ,传参

 一.需求背景 1. 需求:spring MVC框架controller间跳转,需重定向.有几种情况:不带参数跳转,带参数拼接url形式跳转,带参数不拼接参数跳转,页面也能显示. @RequestMapping(value = "/activityType", method = RequestMethod.GET) public String activityType(HttpServletRequest request, ModelMap model,RedirectAttribut