iOS如何识别App打开的来源于

写在前面

在数量计算方面范畴看App打开来源相当主要,尤其是对此分享以及付费引流的衡量效果上装有充足重庆大学的成效。

iOS App最常用的开拓途径有两种:

  1. 音讯(本地、远程)推送打开
  2. scheme跳转打开
  3. UniversalLinks打开

哪些区分

App运转后表明着App底层已经准备齐全的地方就有能够用来分化的标志,也正是在AppDelegate中的application:didFinishLaunchingWithOptions:

if (launchOptions[UIApplicationLaunchOptionsRemoteNotificationKey]) {
    NSLog(@"远程推送打开");
} else if (launchOptions[UIApplicationLaunchOptionsLocalNotificationKey]) {
    NSLog(@"本地推送打开");
} else if (launchOptions[UIApplicationLaunchOptionsUserActivityDictionaryKey]) {
    NSLog(@"UniversalLinks打开");
} else if (launchOptions[UIApplicationLaunchOptionsURLKey]) {
    NSLog(@"Scheme跳转打开");
} else if (!launchOptions) {
    NSLog(@"手动点击打开");
}

再多说有的

launchOptions除了用来区分App的开发格局,还承载着打开时的局地数量,比如scheme跳转、UniversalLinks打开的时候的一部分现实链接,以前使用的bundleID等数据便宜追述。

例如UniversalLinks中,大家就能够透过如下方法赢得链接,而不必然要等到专用的Delegate方法再次来到给大家

NSUserActivity *act = [[launchOptions objectForKey:UIApplicationLaunchOptionsUserActivityDictionaryKey] objectForKey:@"UIApplicationLaunchOptionsUserActivityKey"];
NSString *url = [act.webpageURL absoluteString];

别的枚举的意义

  • UIApplicationLaunchOptionsURLKey
    在scheme跳转打开的时候出现,用于获取scheme地址的key;如”enalibaba://home

  • UIApplicationLaunchOptionsSourceApplicationKey
    从别的App跳转打开的时候出现实价值为1个字符串表示来源App的BundleID;如:”com.apple.mobilesafari”
    表示从Safari跳转

  • UIApplicationLaunchOptionsRemoteNotificationKey
    从远程推送打开,这一个key对应的值是1个Dictionary,里面纵使推送的Payload

  • UIApplicationLaunchOptionsLocalNotificationKey
    从当地推送打开,这几个key对应的值是一个Dictionary,里面正是推送的Payload

  • UIApplicationLaunchOptionsAnnotationKey
    其一Key应该不会再看见了,它只可以通过
    application:openURL:sourceApplication:annotation:
    打开App的时候才会冒出,但以此法子已经被标记为 Deprecated
    从9.0随后不再援助。

  • UIApplicationLaunchOptionsLocationKey
    依照地理地点触发的App打开,官方文书档案应该更新过了,已经找不到原文,大意是只要App开启了地理地点,在App退出到后台之后,倘若接触了地理地方打开App,那么LaunchOptions就会有其一Key,可用来打开地理地点事件监听的标志,但那种地理地点触发打开App的力量急需App
    Store审核才能打开使用。

  • UIApplicationLaunchOptionsNewsstandDownloadsKey
    关于杂志更新的,用到极少,不多描述

  • UIApplicationLaunchOptionsBluetoothCentralsKey
    蓝牙5.0服务提供设备唤醒App时出现的Key,数据为数组,代表设备列表

  • UIApplicationLaunchOptionsBluetoothPeripheralsKey
    Bluetooth被服务设施唤醒App时出现的Key,数据为数组,代表设备列表

  • UIApplicationLaunchOptionsShortcutItemKey
    从3D Touch打开App时出现此Key

  • 必发bifa88手机客服端,UIApplicationLaunchOptionsUserActivityDictionaryKey
    UniversalLinks打开时出现此Key,用于获取再而三打开发银行为的一对数码,日常是点击的链接

  • UIApplicationLaunchOptionsUserActivityTypeKey
    UniversalLinks打开时现身此Key,值为NSUserActivityTypeBrowsingWeb,而且这几个枚举值就以此以

  • UIApplicationLaunchOptionsCloudKitShareMetadataKey
    A key indicating that the app received a CloudKit share invitation.
    相关文书档案相比较少,估摸是从文件里分享给App打开时会现身此Key。

参考
https://developer.apple.com/documentation/uikit/uiapplicationdelegate/1623073-application?language=objc
http://nshipster.cn/launch-options/
http://www.jianshu.com/p/2ab2716c334e
http://www.jianshu.com/p/6a1eb76ec776

相关文章