Почему ссылки на приложения facebook не работают в react native

#android #react-native #facebook #applinks

Вопрос:

Я пытаюсь интегрировать ссылки на приложения facebook для своего родного приложения react, и, к сожалению, это, похоже, работает не так, как ожидалось. Прежде всего, я следовал инструкциям, упомянутым в документах. Поэтому я использовал ссылку react-native-facebook-app-link и попытался проверить ее с помощью помощника по рекламе, но не смог получить URL-адрес.

Это код, который я добавил,

 lt;activity  android:name=".MainActivity"  android:label="@string/app_name"  android:launchMode="singleTask"  android:screenOrientation="portrait"  android:configChanges="keyboard|keyboardHidden|orientation|screenSize|uiMode"  android:windowSoftInputMode="adjustPan"  android:exported="true"gt;   lt;intent-filtergt;  lt;data android:scheme="sample" android:host="open"/gt;  lt;action android:name="android.intent.action.VIEW"/gt;  lt;category android:name="android.intent.category.DEFAULT"/gt;  lt;category android:name="android.intent.category.BROWSABLE"/gt;  lt;/intent-filtergt;   lt;/activitygt;  

и я добавил ключ в файл манифеста,

 lt;meta-data android:name="com.facebook.sdk.ApplicationId" android:value="@string/facebook_app_id"/gt;  lt;meta-data android:name="com.facebook.sdk.AdvertiserIDCollectionEnabled"  android:value="true"/gt;  

а также я реализовал метод,

 @Override  protected void onCreate(Bundle savedInstanceState) {  super.onCreate(savedInstanceState);  AppLinkData.fetchDeferredAppLinkData(this,  new AppLinkData.CompletionHandler() {  @Override  public void onDeferredAppLinkDataFetched(AppLinkData appLinkData) {  Log.d("urls", String.valueOf(appLinkData));  }  }  );  }  

Поскольку я создаю приложение с использованием react native, в app.js я добавил приведенный ниже код,

 async componentDidMount () {  FacebookAppLink.initializeSDK();  const url = await FacebookAppLink.fetchUrl();  if(url){  console.log("FACEBOOOK URL: ", url)  } }  

Наконец, я попробовал использовать помощник по рекламе, введите описание изображения здесь

Однако я не получаю URL-адрес. Он перенаправляется в приложение, но URL-адрес не печатается в консоли. И, пожалуйста, обратите внимание, что я следовал следующим шагам,

  1. Удалил приложение
  2. Сгенерировал ссылку, и я получил уведомление в facebook
  3. Восстановите и установите приложение с помощью android studio
  4. Затем нажмите на эту ссылку

Я не уверен, что я сделал не так. Некоторая помощь будет весьма признательна. Заранее спасибо.

Комментарии:

1. можете ли вы добавить пример с GitHub для повторения?

2. @SHA, пожалуйста, предоставьте ссылку на репозиторий GitHub.

Ответ №1:

Я думаю, что вам не нужно снова внедрять следующий собственный метод в свой проект

 @Override  protected void onCreate(Bundle savedInstanceState) {  super.onCreate(savedInstanceState);  AppLinkData.fetchDeferredAppLinkData(this,  new AppLinkData.CompletionHandler() {  @Override  public void onDeferredAppLinkDataFetched(AppLinkData appLinkData) {  Log.d("urls", String.valueOf(appLinkData));  }  }  );  }  

Он уже реализован в этой библиотеке, и оттуда он разрешает/отклоняет обещание.

Вам просто нужно написать то, что вы написали, componentDidMount и это должно сработать.