IOS基础和进阶开发首页投稿(暂停使用,暂停投稿)

deepLink

2017-02-22  本文已影响31人  王大吉Rock

写在前面

我们在使用deepLink的流程是这样的:
(1)在A应用内配置了B应用的URLScheme,那么我们就可以进行配置生成一个URL,在执行openURL方法,就可以达到从A应用跳转到B应用了。比较完整的写法如下:

// 跳转到索尼中国APP(需要提前下载好“索尼中国”APP,否则是无法跳转的)
NSURL *url = [NSURL URLWithString:@"sonychina://"];
if ([[UIApplication sharedApplication] canOpenURL:url]){
        if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 10.0) {
            // IOS10之后
            [[UIApplication sharedApplication] openURL:url options:@{} completionHandler:^(BOOL success) {
                
            }];
            
        } else {
            //IOS10之前
            [[UIApplication sharedApplication] openURL:url];
        }
      
} else {
        // 弹框提示用户“未安装此应用”或者跳转到“AppStore下载此应用”
}

(2)从Safari的页面中触发“配置了B应用的URLScheme”的方法。
执行的JS的方法中,例如:
dLink.openAPP方法触发点击事件,dLink.conf参数配置来配置URLScheme。最后执行的URL为:sonychina://

(3)而在一般情况下,都是需要跳转到B应用的指定的界面,那么需要在#import "AppDelegate.m"中获取openURL:方法中的URL或者options参数。

// 在IOS9之前
- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url

// 在IOS9之后
- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString *,id> *)options

Universal Links 介绍

  1. 在WWDC 2015上,Apple为 iOS 9 宣布了一个所谓的通用链接的deep link特性,即Universal links。
  2. Universal Links,一种能够方便的通过传统的HTTP/HTTPS链接来启动App,使用相同的网址打开网站和 App。

deepLink

NSURL *url = [NSURL URLWithString:@"http://www.baidu.com/s?tn=baiduhome_pg&bs=NSRUL&f=8&rsv_bp=1&rsv_spt=1&wd=NSurl&inputT=2709"];

1.了解下NSURL的基本操作:
[url scheme] :http
[url host]:www.baidu.com
[url password] nil
[url port]
[url path]
[url relativePath]
[url pathComponents]
[url parameterString]
[url query]
[url fragment]
[url user]
[url password]

相关博客

点击A类APP的控件跳转:到B类APP的指定界面(如果没有安装此app 显示webView,此webView中含有跳转到appStore的链接)

几种方法

三方SDK

deepLink走的方法

不管APP是启动还是未启动的,都会走AppDelegate.m中的此方法

- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString *,id> *)options {

    // APP的scheme
    if ([url scheme] isEqualToString:@"你的APP的scheme") {

        // 从其他APP的特定URL跳转进来的(主机为“app”)
        if ([[url host] isEqualToString:@"app"]) {
            
        }
    }
    
}

注:

  1. APP启动状况下,会直接走此方法;但APP未启动状况下,会先将APP启动,再走openURL。
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

}

推送

在项目中配置推送,可参考:相关博客

注:

  1. 推送在APP启动时和未启动的状态下,走的方法是不一样。
  2. 在IOS10的情况下,需导入新的框架,组成部分:主标题、副标题、图片。
// 在启动的状况下(分情况比较多)

// app未启动的状况下
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    // 推送跳转(在程序被杀死的情况下)
    NSMutableDictionary *userInfo = [launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey];
}


上一篇下一篇

猜你喜欢

热点阅读