Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 是否有办法识别该应用程序是通过didFinishLaunchingWithOptions中的firebase动态链接安装的?_Ios_Swift_Firebase_Firebase Dynamic Links - Fatal编程技术网

Ios 是否有办法识别该应用程序是通过didFinishLaunchingWithOptions中的firebase动态链接安装的?

Ios 是否有办法识别该应用程序是通过didFinishLaunchingWithOptions中的firebase动态链接安装的?,ios,swift,firebase,firebase-dynamic-links,Ios,Swift,Firebase,Firebase Dynamic Links,我正在我的iOS应用程序中实现firebase动态链接,我已经可以解析链接,重定向到AppStore等。现在我想区分应用程序的第一次运行,当用户从动态链接安装它时-我想跳过介绍并向他显示预期显示的内容 是否有一些参数,我可以在应用程序中捕捉到(uquot:didfishlaunchingwithoptions:)因此我可以说它是通过动态链接启动的 稍后将调用方法应用程序(uu2;:continueUserActivity:userActivity:restorationHandler:),因此介

我正在我的iOS应用程序中实现firebase动态链接,我已经可以解析链接,重定向到AppStore等。现在我想区分应用程序的第一次运行,当用户从动态链接安装它时-我想跳过介绍并向他显示预期显示的内容

是否有一些参数,我可以在
应用程序中捕捉到(uquot:didfishlaunchingwithoptions:)
因此我可以说它是通过动态链接启动的

稍后将调用方法
应用程序(uu2;:continueUserActivity:userActivity:restorationHandler:)
,因此介绍已经启动


这种情况很难测试,因为您必须在AppStore上发布应用程序

嗯。。。据我所知,在
应用程序:(\uU2DidFinishLaunchingWithOptions)
阶段,没有任何东西可以让你知道应用程序是通过动态链接打开的。正如您所提到的,您必须等到
continueUserActivity
调用


这就是说,
FIRDynamicLinks.dynamicLinks()?.HandleUniversalink
几乎立即返回一个布尔值,因此您应该能够利用该值在不影响用户体验的情况下缩短动画的时间。回调本身可能要到几毫秒后才会发生,这取决于它是缩短的动态链接(需要网络调用)还是扩展的动态链接(不需要网络调用)。

实际上,你不需要在应用商店中发布应用程序就可以工作-单击链接,关闭应用商店,然后通过Xcode(或任何其他测试版发行平台,如TestFlight或Fabric)安装应用程序构建也会产生完全相同的效果

根据,第一次安装调用的方法是
openURL
(不,这对我来说也没有意义)。
continueUserActivity
方法适用于通用链接,仅在打开链接时已安装应用程序时使用

我不知道有什么方法可以检测应用程序在安装后第一次从“延迟”链接打开,但只要有深度链接,你就可以直接路由到共享内容(跳过介绍)。如果没有深层链接,则显示常规介绍


备选方案 您可以查看(完全披露:我是分支团队成员)。除此之外,Branch是Firebase动态链接的一个伟大、免费的替代品,具有大量附加功能。以下是分支在
didFinishLaunchingWithOptions
中立即返回的所有参数的示例:

{  
    "branch_view_enabled"   = 0; 
    "browser_fingerprint_id" = "<null>"; 
    data = "{  
      \"+is_first_session\":false,
      \"+clicked_branch_link\":true,
      \"+match_guaranteed\":true,
      \"$canonical_identifier\":\"room/OrangeOak\",
      \"$exp_date\":0,
      \"$identity_id\":\"308073965526600507\",
      \"$og_title\":\"Orange Oak\",
      \"$one_time_use\":false,
      \"$publicly_indexable\":1,
      \"room_name\":\"Orange Oak\", // this is a custom param, of which you may have an unlimited number
      \"~channel\":\"pasteboard\",
      \"~creation_source\":3,
      \"~feature\":\"sharing\",
      \"~id\":\"319180030632948530\",
      \"+click_timestamp\":1477336707,
      \"~referring_link\":\"https://branchmaps.app.link/qTLPNAJ0Jx\"
    }"; 
    "device_fingerprint_id" = 308073965409112574; 
    "identity_id" = 308073965526600507; 
    link = "https://branchmaps.app.link/?%24identity_id=308073965526600507"; 
    "session_id" = 319180164046538734;
}
{
“分支视图已启用”=0;
“浏览器指纹id=”;
数据={
\“+是第一次会话\”:false,
\“+单击分支链接\”:true,
\“+匹配保证\”:正确,
\“$canonical\u identifier\”:\“room/OrangeOak\”,
\“$exp_date\”:0,
\“$identity\u id\”:\“308073965526600507\”,
\“$og_title\”:“橙色橡木”,
\“$one\u time\u use\”:false,
\“$public_indexable\”:1,
\“room\u name\”:“Orange Oak\”,//这是一个自定义参数,您可以拥有无限数量的参数
\“~channel\”:“pasteboard\”,
\“~creation_source\”:3,
\“~feature\”:“sharing\”,
\“~id\”:\“319180030632948530\”,
\“+单击时间戳\”:1477336707,
\“~引用链接\”:”https://branchmaps.app.link/qTLPNAJ0Jx\"
}"; 
“设备指纹识别码”=308073965409112574;
“身份识别码”=308073965526600507;
链接=”https://branchmaps.app.link/?%24identity_id=308073965526600507"; 
“会话id”=319180164046538734;
}

您可以在分支文档中阅读有关这些参数的更多信息。

这应该可以,但请注意,在初始安装时,即使是扩展链接,也需要进行网络调用。我还发现,在启动屏幕消失之前,将调用方法
继续执行SerivityWithType
。因此,这是放置“跳过介绍”逻辑的地方。这正是我要找的。firebase文档说你可以在它发布之前对它进行测试,但我不知道这个过程是在我点击AppStore链接然后从Xcode运行应用程序后触发的。非常感谢!我❤️ Branch并认为这是一个很棒的产品,但对Firebase问题给出Firebase+Branch的答案似乎有点错误。嘿@NSTJ,感谢您的反馈!OP询问了一些在Firebase中不可能完成的事情。希望他们发现了解替代解决方案会有所帮助