ОБНОВЛЕНИЕ 1
Я удалил return из кода, и теперь ссылки работают на IOS.
Но на Android я не могу открыть ни одно приложение. Есть идеи?
Я пытаюсь открыть из своего приложения разные приложения.
return Linking.openURL(“twitter://“);
return Linking.openURL(“instagram://“);
Но это не работает. Настроил IOS по документации. На андроиде тоже не работает. В то время как...
return Linking.openURL(“tripadvisor://“);
Работайте нормально. Есть идеи, почему я не могу открывать другие приложения. Это код, который я использую (откройте приложение, если оно установлено, или откройте магазин с ним, но иногда даже магазин не открывается), что я сделал не так:
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);
});
Пожалуйста, подготовьте репозиторий репродукций. В вашем конкретном вопросе любой может помочь вам, просто увидев ваши образцы кодов. Благодарю.





Вы не заполнили " для Twitter и Instagram, я не знаю, совершили ли вы ту же ошибку в приложении, если да, исправление может решить эту проблему.
Нет, это опечатка, я забыл
Я использовал только URL-адрес, и он работает как для iOS, так и для Android.
Linking.openURL('https://www.facebook.com/');
URL-адреса в порядке. Я хочу открыть приложение, если оно на телефоне. И это просто ничего не происходит
Просто поместите ссылку на приложение, если оно есть, оно откроется самостоятельно ... кстати, это сработало для меня!
Под ссылкой на приложение вы имеете в виду «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));
Я думаю, что, возможно, ваша проблема может быть в return Linking.openUrl, я не уверен, что вам нужен возврат в этом заявлении. Работает если снимать возврат? В противном случае может помочь переместить ваш Alert за пределы блока then из canOpenUrl.
Я получаю false для поддержки, если я использую url «twitter: //» или «instagram: //» (android и ios), вы можете попробовать эти URL-адреса в своем коде, пожалуйста?
Использование URL-адреса «twitter: //» работает для меня при начальных тестах на моем устройстве iOS. Любопытно, что это не работает с вашим ... вы пытались удалить это выражение возврата?
Да, я удалил оператор возврата, но теперь он работает на IOS, а на Android - нет. Это работает на вашем устройстве Android? Если я использую "fb: //" на IOS, facebook открывается, но на android ничего не происходит.
Попробуйте использовать такой пакет:
https://github.com/react-native-community/react-native-share
Вы можете попробовать использовать только некоторые из его функций или изучить собственный код оттуда и создать некоторые функции моста в собственном коде, а затем экспортировать их для использования в коде JS.
Примечание: для тестов вам придется использовать настоящие устройства.
Это у меня уже есть. Это еще кое-что: - / На андроиде тоже не работает.
Ваша проблема связана с содержимым URL-адреса, twitter:// ничего не значит для приложения Android Twitter, поэтому оно не открывается.
Например, следующий код должен работать:
Linking.openURL('twitter://timeline')
или
Linking.openURL('instagram://user?username=apple')
Вы должны найти схемы URL-адресов прав (в документации это не очень ясно), которые могут отличаться в iOS и Android.
Twitter: Как я могу открыть твит Twitter, используя собственное приложение Twitter на iOS?
Instagram: https://www.instagram.com/developer/mobile-sharing/iphone-hooks/ (все не работает на Android)
разное: https://pureoxygenlabs.com/10-app-url-schemes-for-marketers/
@ 1110 не стесняйтесь обращаться ко мне за помощью в поиске нужных вам URL
Привет, есть идеи, как использовать эту 'instagram: // library? AssetPath = $ {uri}' на Android? На айфоне нормально работает
Вы должны найти схемы URL-адресов прав. Посмотри на мой код
Linking.openURL('instagram://user?username=apple')
.catch(() => {
Linking.openURL('https://www.instagram.com/apple');
})
Твиттер
Linking.openURL('twitter://user?screen_name=apple')
.catch(() => {
Linking.openURL('https://www.twitter.com/apple');
})
Linking.openURL('fb://page/PAGE_ID');
Linking.openURL('http://instagram.com/_u/USER_NAME');
Linking.openURL('http://instagram.com/_p/PICTURE');
подскажите пожалуйста схему для фейсбука?
Когда вы используете
return, он также нарушает конкретную функцию, которую вы выполняете в данный момент. Итак, в вашем верхнем примере он будет запускать только первый. Я не вижу смысла использовать return сLinking.openURL-методом, так что, может быть, просто оставьте это в своем коде.