无论是不是安装了应用程序,动态链接始终打开 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 的链接,但当时没有安装该应用程序,而是在以后安装了该应用程序?