zoukankan      html  css  js  c++  java
  • iOS开发——应用间跳转

    iOS开发过程中,我们经常碰到应用间跳转的情景:

     1、使用第三方用户登录,跳转到需授权的App或跳转到分享app的对应页面

           *需要用户授权,还需要"返回到调用的程序,同时返回授权的用户名、密码"

        2、应用程序推广,跳转到另一个应用程序(本机已经安装);

        3、跳转到iTunes并显示应用程序下载页面(本机没有安装);

        4、第三方支付,跳转到第三方支付App,如支付宝支付,微信支付;

        5、使用系统内置程序,如跳转到打电话、发短信、发邮件、Safari

     

    应用间跳转原理:若应用A跳转到应用B,则给AB自身自定义URL Schemes(自定义的协议头)后,通过在A中处理BURL Schemes,就可以在A中启动B了。

    注:iOS9之后,应用间跳转需要在Info.plsit中设置白名单。以 ‘LSApplicationQueriesSchemes’Key值,对应数组value中添加白名单应用的URL Schemes即可。若未设置白名单,会报错,值得我们注意:

    -canOpenURL: failed for URL: "应用B的URL Schemes://" - error: "This app is not allowed to query for scheme 应用B"

    以下例子均以系统高于iOS9为例。

    例一:应用A跳转到应用B

    AppA自定义URL Schemes,且在应用A的Info.plist中设置白名单,添加应用B的URL Schemes

    跳转代码:

    例二:应用A跳转到应用B指定界面

    A中跳转响应事件:

    应用B捕捉到被其他应用打开:

    系统版本小于iOS9

    系统版本大于iOS9

    例三:应用B反跳转回应用A

    1、 步骤分析:从B再跳转回A,那么在A跳转到B的时候,还应将应用AURL Schemes传递过来。这样我们才能指定返回哪个应用程序(iOS9之后,该应用一定要添加到白名单内)

        指定一个传递URL的规则:协议头://应用BURL Schemes?应用AURL Schemes。即:AppB://One?AppA

        说明:

        AppB是跳转过来的应用App-BURL Schemes

        One是用来区别跳转页面的标识;

        ? 是分割符;

        AppA是跳转回的应用App-AURL Schemes

    2、我们根据传递来的数据,进行反跳回去。跳转页面设置一个属性保存传递的字符串

    @property (nonatomic, copy) NSString *urlString;

    AppA中的修改:

    AppB中的修改:

    1.修改AppDelegate代理方法:

    2.分别修改OneVc和TwoVc控制器

    参考:iOS应用间跳转

  • 相关阅读:
    使用部分函数时并未include其所在头文件,但是能编译成功且能运行,为什么?
    ubuntu开发机所需工具,做个记录,不断补充
    c cpp编程用到的系统边角与其拾遗
    几个递进的make file
    可以用命令行控制eclipse断点增加删除、远程调试创建与启动的插件
    Mac 从睡眠恢复后没有声音的问题
    [netty4][netty-handler]netty之idle handler处理
    《将博客搬至CSDN》
    python2与python3中__metacalss__的不同用法
    python3 type和object的关系
  • 原文地址:https://www.cnblogs.com/xiu619544553/p/5889452.html
Copyright © 2011-2022 走看看