React native ссылка на другое приложение

Я пытаюсь связать с другим приложением из моего родного приложения react (например, Google maps).

мне нужен модуль связывания, как написано здесь: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

1 ответов


не нужно npm install link --save или "связывание библиотек в iOS" руководство. В "<Linking /> компонент" и "связывающее действие librairies" - это две совершенно разные вещи.

<Linking /> - это компонент, который позволяет открывать ссылки (веб-адреса или ссылки на другие приложения) и определять, когда ваше приложение вызывается из ссылки (например, из браузера или другого приложения или push-уведомления). Это основной компонент React Native и поставляется с react-собственный пакет npm.

связывание librairies необходим при установке сторонней библиотеки (например,реагировать родной-карты например), и вам нужно добавить зависимости в конфигурации сборки iOS Xcode и Android Gradle. Обычно это делается с помощью , после npm install его.

единственное, что вы должны do требуется или импортировать <Linking /> в вашем файле javascript перед его использованием. Вы не даже нужна вся часть о обработка глубоких ссылок из документации. Это только для входящих ссылок, которые открывают ваше приложение. Все, что вам нужно начинается с открытие внешних ссылок

теперь, почему ваш код не является тайной. Вот ссылка на рабочее приложение, которое имеет точно такое же поведение. Краткий пример:

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 снова и компиляция вашего проекта new.