React Native откройте страницу Facebook

Я пытался открыть страницу Facebook, используя React Native Linking API. Это не работает для меня. У меня установлено приложение Facebook. Вот что я попробовал:

Linking.openURL('fb://page/<page_name>');
Linking.openURL('fb://profile/<profile_name>');
Linking.openURL('http://facebook.com/<page_name>');

Я также попытался использовать библиотеку сообщений: Communications.web(url), Ни один не работает для Facebook и Instagram. Однако это работает как шарм для Google Maps, Apple Maps, Twitter и других больших парней.

Мне было интересно, что я делаю что-то не так или, может быть, нам следует отправить этим людям из Facebook статьи об Android, как правильно реализовать глубокую связь в своих приложениях? Они явно не знают, что делают.

7 ответов

Хорошо, нашел один способ открыть Facebook:

Linking.openURL('https://www.facebook.com/n/?YOUR_PAGE_NAME');
Linking.openURL('http://instagram.com/_u/USER_NAME');
Linking.openURL('http://instagram.com/_p/PICTURE');

Facebook не будет работать, если вы удалите "www" между прочим.

В общем, вы должны проверить Linking.canOpenURL() для iOS, прежде чем пытаться открыть их.

Кроме того, убедитесь, что вы добавляете свои протоколы в виде массива в info.plist как:

<key>LSApplicationQueriesSchemes</key>
<array>
  <string>fb</string>
</array>

Вы также можете сделать это в своем проекте XCode в info.plist,

У меня та же проблема, но я не могу ее решить. У меня есть несколько кнопок социальных сетей с onpress действие onPress= {()=> Linking.openURL("https://www.SOME_SOCIAL.NETWORK")} Мои кнопки со ссылками на Twitter, Instagram и Snapchat открывают приложение, если оно установлено, или веб-страницу в Safari, если приложение не установлено. Единственный выброс - это Facebook. Учитывая нажимное действие, такое как onPress= {()=> Linking.openURL("https://www.facebook.com/")} ссылка всегда будет открываться в Safari, даже если приложение установлено.

Из-за этого странного поведения я обращаюсь с моим onpress действие для ссылки Facebook, как это:

`` `

  Linking.canOpenURL("fb://profile/XXXXXX").then(supported => {
    if (supported) {
      return Linking.openURL("fb://profile/XXXXXX");
    } else {
      return Linking.openURL("https://www.facebook.com/");
    }
  })

`` `

Приведенный выше код работает не так, как задумано, но, похоже, больше ничего не работает.

Согласно документам https://reactnative.dev/docs/linking#canopenurl . Обещание может быть отклонено для Android. Это мой подход к решению этой проблемы для iOS и Android.

      import { Linking } from 'react-native';

const handleOpenLink = async (url) => {
  try {
    await Linking.openURL(url);
  } catch {
    throw new Error('URI cant open:' + url);
  }
};

Работал для меня, используя эти:

          facebookApp: 'fb://page/318948148343',
    facebookAppIos: 'fb://page/?id=318948148343',
    instagramApp: 'instagram://user?username=stackAnswer',
    youtubeApp: 'vnd.youtube://channel/UCPHssSTfq-K823dDJnvXqgw',
    linkedInApp: 'linkedin://company/google',
  • Обратите внимание на разницу между обеими ссылками на facebook (для iOS вы должны указать идентификатор в качестве параметра)

Кроме того, не забудьте добавить эквивалентные атрибуты в Info.plist для разрешенных приложений, например:

      <key>LSApplicationQueriesSchemes</key>
    <array>
        <string>facebook</string>
        <string>fb</string>
        <string>instagram</string>
        <string>vnd.youtube</string>
        <string>linkedin</string>
    </array>

Обновление - май 2019 г.

// open via app

fb://facewebmodal/f?href=PAGE_NAME

Здесь ничего не сработало, но после нескольких случайных попыток я обнаружил, что это решение работает:

Linking.openURL('fb://page/<ID-PAGE>');

А если вы ищете свой pageid, вот небольшой учебник:https://roadtoblogging.com/get-facebook-page-id/

Другие вопросы по тегам