我希望用户能够通过 Facebook 等共享链接(例如 app.com/SKFLA - 这主要是因为深层链接本身不可点击)。点击后,会重定向到深层链接应用程序://SKFLA。如果安装了该应用程序,则会打开该应用程序 - 到目前为止一切正常。但如果该应用程序未安装,我想在相关页面上打开应用程序商店。这是可以实现的吗?谢谢!
不确定本机行为。 我们使用了第三方服务,例如 https://branch.io/deepviews/。 有很多类似的服务。
如果有人仍然陷入这个问题并需要最简单的解决方案,你会喜欢node-deeplink
1.) 如果安装了应用程序:通过深度链接调用应用程序将始终调用根组件的 componentDidMount。所以你可以在那里附加一个监听器。喜欢:
Linking.getInitialURL()
.then(url => {
if (url) {
this.handleOpenURL({ url });
}
})
.catch(console.error);
Linking.addEventListener('url', this.handleOpenURL);
handleOpenURL(event) {
if (event) {
console.log('event = ', event);
const url = event.url;
const route = url.replace(/.*?:\/\//g, '');
console.log('route = ', route);
if(route.match(/\/([^\/]+)\/?$/)) {
const id = route.match(/\/([^\/]+)\/?$/)[1];
const routeName = route.split('/')[0];
if (routeName === 'privatealbum') {
Actions.privateAlbum({ albumId: id });
}
}
}
}
2.) 如果未安装应用程序:只需在您的服务器中设置一条路由,当您的手机中未安装应用程序时,node-deeplink 包将处理网络浏览器与应用程序商店之间的桥接。
这样,两个案子就可以顺利处理了
最简单的方法是定义一个深层链接路径,如果没有它安装它通过
mod_rewrite
重定向它们。
假设您有一个应用程序,您想要加入一个群组,并且您的通用链接类似于
www.yourdomain.com/joingroup?name=whatever
,这会在您的服务器中为从 iPhone 或 iPad 访问该链接(但没有该群组)的用户添加一条规则。安装的应用程序将用户重定向到应用程序商店。
# Enable mod_rewrite module
server.modules += ( "mod_rewrite" )
# Redirect iOS users from /joingroup to App Store URL
$HTTP["useragent"] =~ "iPhone|iPad|iPod" {
$HTTP["host"] =~ "^(www\.)?mydomain\.com$" {
url.redirect = ( "^/joingroup(.*)" => "https://apps.apple.com/theidoftheappstore" )
}
}