ios – React native链接到另一个应用程序

我正在尝试从我的反应原生应用程序链接到另一个应用程序(例如谷歌地图).

我需要链接模块,如下所示:https://facebook.github.io/react-native/docs/linking.html

我的代码包含一个简单的按钮,它应该打开导航应用程序并将一些位置作为属性传递:

<TouchableOpacity 
   onPress={ () =>{
     Linking.openURL("http://maps.google.com/maps=daddr=Wien")
     .catch(err => console.error('An error occurred',err)); }}
>
   <Text>Navigate</Text>
</TouchableOpacity>

在加载视图时,我没有得到任何错误,这意味着要求模块正常工作.

点击按钮后,我收到以下错误消息:

undefined is not an object (evaluating '_reactNative.Linking.openURL')

我已按照以下步骤操作:https://facebook.github.io/react-native/docs/linking-libraries-ios.html并安装了npm install link –save< - 也许问题是这是错误的模块?如果是错误的,有人知道如何调用正确的吗?

解决方法

您不需要npm安装链接–save或使用“ Linking Libraries in iOS”指南. “< Linking />组件”和“链接图书馆行动”是两个截然不同的事情.

<链接/>是一个组件,允许您打开链接(Web URL或其他应用程序的链接),并检测从链接(从浏览器或其他应用程序,或推送通知)调用您的应用程序的时间.它是React Native的核心组件,带有react-native npm包.

当您安装第三方库(例如react-native-maps)并且需要将依赖项添加到iOS Xcode和Android Gradle构建配置时,必须链接库.它通常使用react-native链接< package>来完成.命令,在你安装它之后.

您必须做的唯一事情是要求或导入< Linking />在使用它之前在您的javascript文件中.您甚至不需要从文档中处理深层链接的整个部分.这仅适用于打开您的应用的传入链接.您所需要的只是Opening external links

现在,为什么你的代码失败是一个谜.这是一个具有完全相同行为的工作应用程序的链接.一个简洁的例子是:

import React from 'react';
import { TouchableOpacity,Linking,Text } from 'react-native';

export default function Button() {
  return (
    <TouchableOpacity onPress={() => Linking.openURL('https://maps.google.com?q=stack+overflow+offices')}>
      <Text>Press me</Text>
    </TouchableOpacity>
  );
}

你也可以在rnplay这里测试一下.

我建议清理你的项目,删除node_modules文件夹并再次执行npm install,并将你的项目编译为新的.

相关文章

UITabBarController 是 iOS 中用于管理和显示选项卡界面的一...
UITableView的重用机制避免了频繁创建和销毁单元格的开销,使...
Objective-C中,类的实例变量(instance variables)和属性(...
从内存管理的角度来看,block可以作为方法的传入参数是因为b...
WKWebView 是 iOS 开发中用于显示网页内容的组件,它是在 iO...
OC中常用的多线程编程技术: 1. NSThread NSThread是Objecti...