[英]Firebase Dynamic Links doesn't navigate to deep link on iOS
在托管工作流中使用Firebase 動態鏈接Expo 應用程序指向 Android 上應用程序中的正確深層鏈接,但在 iOS 上僅在上次打開的任何頁面或主頁中打開應用程序。
app.config.js
ios: {
associatedDomains: [
'applinks:*.myapp.web.app',
'applinks:myapp.web.app',
'applinks:*.myapp.page.link',
'applinks:myapp.page.link',
],
},
AppNavigation.js
const linking = {
prefixes: [
prefix,
'https://myapp.web.app',
'https://*.myapp.web.app',
],
存儲在 myapp.web.app 上的 apple-app-site-association 文件
{
"applinks": {
"apps": [],
"details": [
{
"appID": "1234567890.com.my.app",
"paths": [ "*" ]
}
]
}
}
動態鏈接是使用 REST API 和以下負載生成的:
const payload = {
dynamicLinkInfo: {
domainUriPrefix: 'https://myapp.page.link',
link: `https://myapp.web.app/${deepLink}`,
androidInfo: {
androidPackageName: com.my.app,
},
iosInfo: {
iosBundleId: com.my.app,
iosAppStoreId: 1234567890,
},
生成的動態鏈接打開應用程序並按預期指向 Android 上的${deepLink}
,但不是 iOS 上的。這已在使用 EAS 構建的應用程序中進行了測試。
最后自己解決了這個問題。 動態鏈接在 Android 上自動解析(從短鏈接轉換為完整鏈接),但在 iOS 上必須使用dynamicLinks().resolveLink(url);
解析后,鏈接會被 React Native Navigation 獲取,並像普通的深層鏈接一樣工作。
動態鏈接的完整代碼:
const linking = {
prefixes: [
'https://myapp.page.link',
'https://myapp.web.app',
],
async getInitialURL() {
// If the app was opened with a Firebase Dynamic Link
const dynamicLink = await dynamicLinks().getInitialLink();
if (dynamicLink) {
const { url } = dynamicLink;
const resolvedLink = await dynamicLinks().resolveLink(url);
return resolvedLink.url;
}
// If the app was opened with any other link (sometimes the Dynamic Link also ends up here, so it needs to be resolved
const initialUrl = await Linking.getInitialURL();
if (initialUrl) {
const resolvedLink = await dynamicLinks().resolveLink(initialUrl);
return (resolvedLink) ? resolvedLink.url : initialUrl;
}
},
subscribe(listener) {
const handleDynamicLink = (dynamicLink) => {
listener(dynamicLink.url);
};
// Listen to incoming links from deep linking
const unsubscribeToDynamicLinks = dynamicLinks().onLink(handleDynamicLink);
return () => {
// Clean up the event listeners
unsubscribeToDynamicLinks();
};
},
};
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.