移动应用间跳转的方法

移动应用间跳转,可通过scheme的方式进行

1、URL Scheme概念

       URL Scheme 就是一个可以让 app 相互之间可以跳转的协议。每个 app 的 URL Scheme 都是不一样的,如果存在一样的 URL Scheme,那么系统就会响应先安装那个 app 的 URL Scheme,因为后安装的 app 的 URL Scheme 被覆盖掉了,是不能被调用的。

     运用URL : 统一资源定位符

     scheme协议头(必须):决定查找应用的方式, 如http://、ftp://、tel://、file://

     host宿主(可选):如www.xxx.com、自定义等

     path路径(可选):设置资源路径,如/path等

     param参数(可选):如?param1=xxx等

     如scheme + host,http://www.xxx.com,是用http协议访问具体协议具体网页。

2、设置方式

      默认情况下应用程序是没有自己的URL Scheme的,如果想要拥有自己应用的URL Scheme,则需要设置。

     以iOS项目为例,项目 -> info -> URL Types -> URL Scheme

3、打开方式

     跳转到其他应用程序方法,如:

    (1)打电话 tel://  

    (2)发短信: sms://

    (3)发邮件  mailTo://

    (4)打开网址http://

     代码中设置需跳转的URL方法:

NSURL *url = [NSURL URLWithString:@"schemexxx://hostxxx/pathxxx?paramxxx=202102"];

/**
     url.scheme // scheme

     url.host  // 宿主

     url.path // 路径

     url.query // 参数
*/

    判断本机是否安装了目标程序:

if ([[UIApplication sharedApplication] canOpenURL:url]) {
    [[UIApplication sharedApplication] openURL:url];
} else {
    NSLog(@"没有安装目标应用");
}

4、对方APP执行的接收方法

// 只要是由其他应用程序打开的,就会调用该方法
// URL为其他应用打开当前应用时使用的URL
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url

// openURL 是打开当前应用的url
// sourceApplication 是打开当前应用的源应用的BundleId

/*
 提示:一旦重写了新方法,旧方法就不再被执行
 但对于很多第三方框架,都建议两个方法全都写
 */

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation

5、对于iOS9.0跳转适配

      在info.plist文件中添加LSApplicationQueriesSchemes字段,可以添加为数组

      需添加 LSApplicationQueriesSchemes的key,以及添加对应URL的scheme

6、跳回原应用方法

     如一个灵活的方法,发起调用的源应用在 Scheme 后面加一个参数 back_scheme=scheme_a,这样目标应用就知道了需要返回信息给源应用,源应用和目标应用这种自定义协议也可称作伪协议,双方应用间互相自己约定即可。

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值