【问题标题】: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

【问题讨论】:

标签: ios firebase react-native firebase-dynamic-links


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2021-10-07
    • 1970-01-01
    • 2021-04-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-12
    • 1970-01-01
    • 2020-03-23
    相关资源
    最近更新 更多