更新 1
我return
从代码中删除,现在链接在 IOS 上工作。但是在android上我无法打开任何应用程序。任何的想法?
我正在尝试从我的应用程序中打开不同的应用程序。
return Linking.openURL(“twitter://“);
return Linking.openURL(“instagram://“);
Run Code Online (Sandbox Code Playgroud)
但它不起作用。我通过文档配置了 IOS。在 android 上也不起作用。尽管...
return Linking.openURL(“tripadvisor://“);
Run Code Online (Sandbox Code Playgroud)
工作得很好。知道为什么我无法打开其他应用程序。
这是我正在使用的代码(如果已安装,则打开应用程序或使用它打开商店,但有时甚至商店都没有打开)我做错了什么:
let appUrl = "instagram://";
Linking.canOpenURL(appUrl).then(supported => {
if (!supported) {
Alert.alert("",
"",
[
{text: "go to store", onPress: this.openStorePress},
{text: "cancel", onPress: () => { }, style: 'cancel'},
],
{ cancelable: false }
);
} else {
return Linking.openURL(appUrl);
}
}).catch(err => {
console.error(err);
});
Run Code Online (Sandbox Code Playgroud)
您必须找到权限 URL 方案。看看我的代码
Linking.openURL('instagram://user?username=apple')
.catch(() => {
Linking.openURL('https://www.instagram.com/apple');
})
Run Code Online (Sandbox Code Playgroud)
推特
Linking.openURL('twitter://user?screen_name=apple')
.catch(() => {
Linking.openURL('https://www.twitter.com/apple');
})
Run Code Online (Sandbox Code Playgroud)
Linking.openURL('fb://page/PAGE_ID');
Linking.openURL('http://instagram.com/_u/USER_NAME');
Linking.openURL('http://instagram.com/_p/PICTURE');
Run Code Online (Sandbox Code Playgroud)
您的问题与 url 的内容有关,twitter://
对 Android Twitter 应用程序没有任何意义,因此它不会打开。
例如,以下代码应该可以工作:
Linking.openURL('twitter://timeline')
Run Code Online (Sandbox Code Playgroud)
或者
Linking.openURL('instagram://user?username=apple')
Run Code Online (Sandbox Code Playgroud)
您必须找到 iOS 和 Android 之间可能不同的权限 url 方案(文档对此不是很清楚)。
Instagram:https : //www.instagram.com/developer/mobile-sharing/iphone-hooks/(均不适用于Android)
杂项:https : //pureoxygenlabs.com/10-app-url-schemes-for-marketers/
您的代码看起来非常可靠,这是我如何在应用程序中打开 Twitter 的示例。
const twitterUrlScheme = `twitter://user?screen_name=${twitterUsername}`;
Linking.canOpenURL(twitterUrlScheme)
.then((supported) =>
Linking.openURL(
supported
? twitterUrlScheme
: `https://www.twitter.com/${twitterUsername}`
)
)
.catch((err) => console.error('An error occurred', err));
Run Code Online (Sandbox Code Playgroud)
我想也许你的问题可能是return Linking.openUrl
,我不确定你是否需要该声明中的返回。如果去掉退货还有作用吗?Alert
否则,将您的代码移出 canOpenUrl 的 then 块可能会有所帮助。
归档时间: |
|
查看次数: |
9807 次 |
最近记录: |