#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-адрес не печатается в консоли. И, пожалуйста, обратите внимание, что я следовал следующим шагам,
- Удалил приложение
- Сгенерировал ссылку, и я получил уведомление в facebook
- Восстановите и установите приложение с помощью android studio
- Затем нажмите на эту ссылку
Я не уверен, что я сделал не так. Некоторая помощь будет весьма признательна. Заранее спасибо.
Комментарии:
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
и это должно сработать.