美文网首页
IOS用RN调用原生应用(电话,地图,邮箱等)

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

作者: Kris_lee | 来源:发表于2017-04-15 11:16 被阅读136次

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

    相关文章

      网友评论

          本文标题:IOS用RN调用原生应用(电话,地图,邮箱等)

          本文链接:https://www.haomeiwen.com/subject/ltybattx.html