IOS用RN调用原生应用(电话,地图,邮箱等)
RN如何调用原生应用。RN里有一个api 叫 Linking 。这个模块让我们可以轻松调用原生应用。实现电话,浏览器,地图,邮箱等。
官方文档 http://reactnative.cn/docs/0.43/linking.html
处理链接:
首先:如果你的应用被其注册过的外部url调起,则可以在任何组件内这样获取和处理它: 如果要在现有的MainActivity中监听传入的intent,那么需要在AndroidManifest.xml中将MainActivity的launchMode设置为singleTask。相关解释可参考文档。如果你不需要处理监听,就直接进行下面的操作
1、安卓不需要环境配置。。。
2、ios的环境需要配置,参考文档:http://reactnative.cn/docs/0.43/linking-libraries-ios.html
需要在*AppDelegate.m文件中添加:
具体代码可上官网拷贝。这里可以选择自动和手动。自动参考文档即可,笔者比较喜欢手动,因为这样如果发生配置错误,可以查看原因。
第一步
如果该库包含原生代码,那么在它的文件夹下一定有一个.xcodeproj文件。 把这个文件拖到你的XCode工程下(通常拖到XCode的Libraries分组里)
第二步
点击你的主工程文件,选择Build Phases,然后把刚才所添加进去的.xcodeproj下的Products文件夹中的静态库文件(.a文件),拖到Link Binary With Libraries组内。
第三步
不是所有的库都需要进行这个步骤,你需要考虑的问题在于:
我需要在编译的期间了解库的内容吗?
这个问题的意思是,你是需要在原生代码中使用这个库,还是只需要通过JavaScript访问?如果你只需要通过JavaScript访问这个库,你就可以跳过这步了。
这一步骤对于我们随React Native发布的大部分库来说都不是必要的,但有两个例外是PushNotificationIOS 和 LinkingIOS 。
以PushNotificationIOS为例,你需要在AppDelegate每收到一条推送通知之后,调用库中的一个方法。
这种情况下我们需要能够访问到库的头文件。为了能够顺利打包,你需要打开你的工程文件,选择Build Settings,然后搜索Header Search Paths,然后添加库所在的目录(如果它还有像React这样的子目录需要包含,注意要选中recursive选项)
都完成之后就可以在代码里实现了。
之后在你想要实现的地方调用这个组件:
注意:这里的tel 不能丢。否则功能实现不了。
mailto 邮箱 https 网页 smsto 短信。
代码实现比较简单,就不贴出github的地址了。