IOS用RN调用原生应用(电话,地图,邮箱等)

2017-04-15  本文已影响136人  Kris_lee

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的地址了。

上一篇下一篇

猜你喜欢

热点阅读