无论是不是安装了应用程序,动态链接始终打开 App Store

Posted

技术标签:

【中文标题】无论是不是安装了应用程序,动态链接始终打开 App Store【英文标题】:Dynamic link always open App Store regardless of App installed or not无论是否安装了应用程序,动态链接始终打开 App Store 【发布时间】:2019-05-21 04:35:51 【问题描述】:

我好几天都在为动态链接苦苦挣扎。感谢任何帮助,请。 我集成了firebase动态链接,如果我将链接粘贴到chrome url中并按Enter,它可以打开带有事件触发和url传递的应用程序 但是如果我点击预览页面上的打开按钮,无论是否安装了应用程序,它总是打开应用商店 有什么想法吗?

我浏览了网络上的所有帖子,但运气不佳。

"react-native": "^0.59.5"
"react-native-firebase": "^5.3.1"

pod 'Firebase/Core', '~> 5.20.1'
pod 'Firebase/DynamicLinks', '~> 5.20.1'

firebase 控制台上的域:https://links.umrgo.com/links

捆绑ID:com.umrgo.www.umr-app-ios

URL Types identifier: links.umrgo.com
URL Types identifier: com.umrgo.www.umr-app-ios


capabilities: applinks:links.umrgo.com

发布构建

我还添加了带有字符串数组的 FirebaseDynamicLinksCustomDomains https://links.umrgo.com

我的一些代码如下。

   [FIROptions defaultOptions].deepLinkURLScheme = @"com.umrgo.www.umr-app-ios";

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

  BOOL handled = [[RNFirebaseLinks instance]
                  application:application
                  openURL:url
                  options:options
                  ] || [RCTLinkingManager
                        application:application
                        openURL:url
                        options:options
                        ];

  return handled;


- (BOOL)application:(UIApplication *)application
continueUserActivity:(NSUserActivity *)userActivity
 restorationHandler:(void (^)(NSArray *))restorationHandler 
  BOOL handled = [[RNFirebaseLinks instance]
                  application:application
                  continueUserActivity:userActivity
                  restorationHandler:restorationHandler
                  ] || [RCTLinkingManager
                        application:application
                        continueUserActivity:userActivity
                        restorationHandler:restorationHandler
                        ];

  return handled;


- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url
  sourceApplication:(NSString *)sourceApplication annotation:(id)annotation

  BOOL handled = [RCTLinkingManager
                  application:application
                  openURL:url
                  sourceApplication:sourceApplication
                  annotation:annotation
                  ];
  return handled;



const link = new firebase.links.DynamicLink(`https://www.umrgo.com/publish/$publishId?publishType=$publishType&publishId=$publishId&otherUserUnionId=$currentUserUnionId&conversationId=$conversationId`,
        'links.umrgo.com/links').android.setPackageName(conf.GooglePackageName).ios.setBundleId(conf.AppleBundleId).ios.setAppStoreId(conf.AppleAppID);

firebase.links()
    .createShortDynamicLink(link, 'UNGUESSABLE')
    .then((url) => 
        var payload = 
            key: createLinkUniqueKey(conversationId, publishId, currentUserUnionId, publishType),
            url: url,
            publish_id: publishId,
            target_user_unionid: currentUserUnionId,
            conversation_id: conversationId,
            publish_type: publishType
        
        axios.post(getApiEndpoint(conf.UMRApiUrls.createDynamicLinkRemote), payload, 
            headers: getAuthHeader()
        ).then(response => 
            console(response)
        )
    );

部分截图如下:

redirect to app store

ask for open app

enter link in browser and press enter

app open with url passed if enter link in browser

bottom right is the app, release build

【问题讨论】:

redirect to app store ask for open app enter link in browser and press enter app open with url passed if enter link in browser bottom right is the app, release build 我的一些快照 您能分享一个动态链接网址吗? createShortDynamicLink()之后的回调中的url是什么? 类似links.umrgo.com/links/cXtQ2joM9CkbQomN6 好吧,我想通了。对于任何第一次尝试测试此功能的人,当您点击链接时,您可以选择在应用程序中打开或在 safari 中打开,如果您选择在应用程序中打开,一切看起来都很好,但是如果您选择在 safari 中打开,打开按钮会始终重定向到应用商店。 【参考方案1】:

您提到将链接粘贴到浏览器中。如果您在 Safari 中执行此操作,它将故意不直接转到您的应用程序,因为设备假定您的意图是打开网页。如果您点击链接,它的行为可能会有所不同。 Chrome 可能也在遵循同样的想法。

这个答案提供了一些很好的测试步骤来确保它正常工作:https://***.com/a/44817701/2612222

【讨论】:

以上是关于无论是不是安装了应用程序,动态链接始终打开 App Store的主要内容,如果未能解决你的问题,请参考以下文章

iOS 通用链接无法按预期工作 - 无论路径如何,都始终打开

打开 Firebase 链接后,在设备上重新安装应用程序时始终返回一个链接

即使已经安装了应用程序,分支深度链接也会打开 App Store 而不是 App

如何识别用户是不是打开了 App Store 的链接,但当时没有安装该应用程序,而是在以后安装了该应用程序?

即使已安装应用,Firebase 动态链接也始终会转到应用商店网址

如果应用程序未以编程方式安装 firebase 动态链接,则重定向到 iOS App Store