【发布时间】:2017-03-01 15:50:35
【问题描述】:
在我的 React Native 应用程序中触摸按钮时是否可以打开外部应用程序? 具体来说,我想在触摸按钮时打开 Whatsapp。我该怎么做?
谢谢!
【问题讨论】:
-
你试过让非社交应用在按钮点击时打开吗?
标签: react-native
在我的 React Native 应用程序中触摸按钮时是否可以打开外部应用程序? 具体来说,我想在触摸按钮时打开 Whatsapp。我该怎么做?
谢谢!
【问题讨论】:
标签: react-native
你必须使用React Native Linking API:
Linking.openURL('whatsapp://app')
【讨论】:
Possible Unhandled Promise Rejection Error: Could not open URL 'whatsapp://app': No Activity found to handle Intent { act=android.intent.action.VIEW dat=whatsapp://app flg=0x10000000 }
之前用过,
Linking.openURL('whatsapp://app');
但后来网址改成如下,我们也可以添加下图的电话和文字查询参数,
Linking.openURL(`whatsapp://send?phone=${whatsappNo}&text=${whatsappMsg}`);
【讨论】:
deep link URL的随机应用程序
您可以尝试使用应用程序 API 中的参数。例如,在我的情况下,我必须在 IOS 上打开地图并开始从 A 点到 B 点的导航。所以我查看了 HERE 的文档,并使用了导航链接: “http://maps.apple.com/?saddr=Cupertino&daddr=San+Francisco”创建查询以打开应用程序:
<TouchableOpacity onPress={() => Linking.openURL('maps://app?saddr=Cupertino&San+Francisco')}>
<Text>Navigate</Text>
</TouchableOpacity>
您也可以使用坐标,如 lat 和 long :
maps://app?saddr=Cupertino&S100.123+101.222
【讨论】:
我想在我正在为 android 开发的 react-native 应用程序中单击简单按钮打开 whatsapp。
我对此进行了很多搜索,但没有找到任何完美的解决方案。虽然我找到了一个第三方库“npm i -S react-native-app-link”。
这个库中的描述正是我想要做的。但无法弄清楚。如果你们中的任何一个可以帮助它,这对我来说将是一个很大的帮助。
【讨论】:
React Native 不支持 'whatsapp://' 方案。
仅适用于此方案:
一种替代方法是使用 Whatsapp 通用链接 和 React Native Linking:
https://wa.me/<number>
https://reactnative.dev/docs/linking.html#open-links-and-deep-links-universal-links
【讨论】:
whatsapp://send?phone=${whatsappNo}&text=${whatsappMsg});用国家代码尝试了这个号码,除了按下 Whatsapp 上的发送按钮之外,它做了所有事情。
您可以使用此软件包https://github.com/khorark/rn-openapp 在安卓手机上打开其他应用程序。 只需要知道应用程序ID。让他在image 上玩市场。
【讨论】:
将此包https://github.com/danilrafiqi/react-native-open-application 与此https://github.com/FiberJW/react-native-app-link 一起使用
所以如果应用程序已经安装,立即打开它,但如果没有安装它会直接进入google play store
const onPresss = () => {
OpenApplication.openApplication('com.dev47apps.droidcam')
.then(() => {})
.catch(err => {
AppLink.maybeOpenURL('droidcam://', {
appName: 'DroidCam',
appStoreId: '',
appStoreLocale: '',
playStoreId: 'com.dev47apps.droidcam',
})
.then(() => {})
.catch(err => {});
});
};
【讨论】: