Я реализовал Deep-linking в своем приложении для Android. Я хочу отправить ссылки через Facebook Messenger своим друзьям, и когда они нажмут на него, приложение откроется, если оно будет установлено, иначе Google Play Store должен открыть приложение.Android Facebook Deeplink перенаправление на Google Play Store
У меня есть следующий фильтр намерений в манифесте:
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="christmascards" />
</intent-filter>
Это то, что я кладу в Params, которое я посылаю на Facebook, чтобы получить мой канонический URL:
Bundle params = new Bundle();
params.putString("access_token", accessToken);
params.putString("name", "Christmas Cards Link");
params.putString("android", "[{\"app_name\": \""+getString(R.string.app_name)+"\" ," +
"\"class\":\"\"," +
"\"package\":\"com.iovchev.christmascards\"," +
"\"url\":\"christmascards://postcard?id="+cardId+"\"}]"
);
Это то, что Я отправляю в Messenger, когда я получаю свой канонический URL:
FacebookDialog.MessageDialogBuilder builder =
new FacebookDialog.MessageDialogBuilder(SendCardActivity.this)
.setLink(url)
.setName("Christmas Card For You")
.setCaption("Share amazing christmas cards with your friends.")
.setPicture("http://i.imgur.com/L2KlJWQ.png")
.setDescription("To view my amazing post card just click on the link here. You must have Christmas Cards app for Android.");
FacebookDialog dialog = builder.build();
dialog.present();
И всякий раз, когда я нажимаю на сообщение, e в мессенджере, я всегда перенаправляюсь в Google Play Store. Раньше все работало без каких-либо проблем, и все еще, когда я пытаюсь открыть старые сообщения, открывается мое приложение. Единственное различие между нами было то, что у меня были параметры ios для приложения.
Я хочу получить пользовательскую схему, которую я отправляю с данными в ней (я имею в виду идентификатор открытки) и использовать ее в своей HomeActivity, поэтому я удалил содержимое поля класса (когда оно установлено посылал пустое намерение без указателя, который я предоставляю).
Доступ маркер поля представляет собой комбинацию «APP_ID | app_secret»
То, что я пробовал:
- Добавить Ios параметров просто проверить, если все работает - не работает
- остановка Force и очистить приложения для facebook и messenger - Не работает
- Добавить поле класса в android pasams как com.iovchev.christmascards.HomeActivity - Не работает
- Повторно проверить Хэш ключи - Не работает
- Изменить позиции категорий в намерениях фильтра - Не работает
Любые идеи?
Update 1:
Для старых ссылок при нажатии на ссылку посланец проливает следующее намерение:
act=android.intent.action.VIEW dat=christmascards://postcard?id=Vi9XTnj85R&target_url=https://fb.me/1509516792632317
Вот почему начинается мое приложение.
Для новых ссылок он подбрасывает следующее намерение:
act=android.intent.action.VIEW dat=https://fb.me/624376077674657 cmp=com.android.chrome/com.google.android.apps.chrome.Main}.
Вот почему мое приложение не запускается.
Update 2:
Когда вы поделитесь ссылкой с использованием
FacebookDialog shareDialog = new FacebookDialog.ShareDialogBuilder(MainActivity.this)
.setLink(url)
.build();
uiHelper.trackPendingDialogCall(shareDialog.present());
Все в порядке. Так что проблема с посланником?