很常

iOS开发 应用跳转爬坑笔记

2021-04-19  本文已影响0人  东也_

首先,如果你希望其他应用能够跳转到你这个应用,你需要给你的应用取一个名字scheme,当然你也可以给你的应用取多个名字,这样别的应用知道你的名字就能够进行跳转了;

怎样给你的应用设置scheme呢?

进入工程,选择工程文件project -> info -> 最下面有个URL TYPES -> 添加

image.png
其他的参数暂时不用管,需要用的时候再去研究就行;
这样设置之后别的应用就可以通过代码
[UIApplication.sharedApplication openURL:[NSURL URLWithString:@"yytza://"]],进行跳转,其实就是名字作为协议头,后面也可以拼接自定义的路径来实现你的业务;

关于设置白名单LSApplicationQueriesSchemes

这是为了限制[UIApplication.sharedApplication canOpenURL:[NSURL URLWithString:@"yytza://"]这个方法进行检查手机是否安装了这个应用,这是在苹果9.0以后增加的安全特性, 它只能检测出这个白名单内的应用。

白名单的应用场景

比如你的应用要集成第三方的功能,例如微信、支付宝支付、分享等。这也是为了完善业务细节。实际上就是检查用户的手机有没有安装这个应用,如果没有安装就可以提示安装等;

关于通用链接UniversalLinks

这是苹果10.0以后曾加的特性,这个通用链接的作用就是通过一个链接来跳转你的应用了,例如:微信多商户的问题,因为项目中不能动态添加scheme,所以会出现跳转到微信支付成功不能跳回来的问题,这是通用链接就可以解决这个问题;
至于多商户是因为在不通的微信商户可以通过使用同一个bundle id 创建应用,获取到的是不同的appid,而这个appid就是会作为你应用的scheme,这样就能在使用不同的appid调取微信支付后能够自己跳转回来;

怎样配置universalLinks?

  1. 为你的应用添加Capability Associated Domains


    image.png

    必须使用 applinks: 开头,后面就是你们后台存放配置文件的地址,这个文件必须放在根目录或者.well-know下,而且文件名必须为apple-app-site-association,里面内容格式为:

{
    "applinks": {
        "apps": [],
        "details": [
            {
                "appID": "证书的teamId.应用的bundleid",
                "paths": ["/wx/123456/*"]
            }
        ]
    }
}

其中path可以根据你的业务自定义

怎么用通用链接跳转?

  1. 其他应用则可以通过调用applinks后面的域名加里面的path进行跳转
    代码跳转

 [UIApplication.sharedApplication openURL:[NSURL URLWithString:@"https://配置的域名/wx/123456"] options:@{UIApplicationOpenURLOptionUniversalLinksOnly : @true} completionHandler:^(BOOL success) {
                
                NSLog(success ? @"通用链接跳转成功" : @"通用链接跳转失败");
            }];

2.可以从浏览器输入域名+路径的方式打开跳转应用

被打开的iOS应用监听打开后的回调方法

- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray<id<UIUserActivityRestoring>> * _Nullable))restorationHandler {
    
    NSURL *url = userActivity.webpageURL;
    if ([userActivity.activityType isEqualToString:NSUserActivityTypeBrowsingWeb]) {
            
    }
        
    return true;
}
上一篇下一篇

猜你喜欢

热点阅读