29

我正在使用 Firebase 动态链接来分享我的应用程序 (>=IOS 9) 并邀请人们参加活动(我的意思是,如果你有应用程序,你可以通过 DeepLink 加入活动,如果你没有,我会在加入活动之前将您发送到应用商店以下载该应用)。

我遵循 Firebase 文档步骤:

  • 我在https://app_code.app.goo.gl/apple-app-site-association获得了相关的 JSON 。
  • 如果我的应用程序已安装,DeepLink 运行良好。
  • 如果我的应用没有安装,Deeplink会把你带到应用商店,但第一次打开时,它不起作用,你不能参加活动。

这是我在首次安装时获取链接的代码:

didFinishLaunchingWithOption

    FIROptions.default().deepLinkURLScheme =  "com.jerem.ProjectAlphaSasasa"
// "com.jerem.ProjectAlphaSasasa" is my app bundle Identifier
    FIRApp.configure()

并基于 Firebase 文档,在第一次打开时,我正在使用以下功能:

//MARK: First entry
//when your app is opened for the first time after installation on any version of iOS.
func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any]) -> Bool {
    print("00000000000000000")
    FIRCrashMessage("Link during first installation")
    downloadEventWithDeepLink = true
    downloadUrl = url
    return application(app, open: url, sourceApplication: nil, annotation: [:])

}

//same as previous but for older version ios 8 (not relevant)
func application(_ application: UIApplication, open url: URL, sourceApplication: String?, annotation: Any) -> Bool {
    let dynamicLink = FIRDynamicLinks.dynamicLinks()?.dynamicLink(fromCustomSchemeURL: url)
    if let dynamicLink = dynamicLink {

        downloadEventWithDeepLink = true
        downloadUrl = dynamicLink.url
        return true
    }

    return false
}

就我而言,downloadEventWithDeepLink是一个标志(全局),我在用户登录我的应用程序后检查(并在那里使用 downloadUrl 变量)。我在设置上做错了什么?

另外,我不知道如何调试它。有没有办法在 Xcode 中模拟 Appstore 首次安装?要找出是否调用了以前的函数(Open Url)?

谢谢你的帮助!

4

2 回答 2

2

我认为通过删除应用程序并单击链接来测试您的实现,一旦将您带到 App Store,您就不会从那里安装应用程序而是从 Xcode 安装,您应该会收到动态链接调用。

作为建议,不要太担心这一点,您应该专注于测试您的动态链接是否会打开应用程序(如果已安装)。测试它在应用程序启动和关闭时是否正常工作。

如果您在重定向到您的应用时遇到问题,请检查您是否已在 url 类型中注册了您的包标识符,并applinks:your_dynamic_links_domain在功能选项卡中添加了您的域。如果您使用的是自定义域,您还必须将其注册到您的 info.plist。

我从来没有FIROptions.default().deepLinkURLScheme在我的项目中设置变量,它们都工作正常

于 2020-01-11T17:10:38.817 回答
0

我有同样的问题,安装后没有收到链接。问题是我的 url 方案没有正确设置。

为了使它工作,我更改了目标信息部分中的 URL 类型:我在标识符和 URL 方案字段中设置了捆绑 ID。

URL 方案设置

我还在我的 firebase 设置代码中添加了一行:

FIRApp.configure()
FIROptions.default().deepLinkURLScheme = "fr.machin.ES5"
于 2017-04-13T09:13:05.303 回答