Почему полная / длинная динамическая ссылка не получает / получает?
Я создаю глубокую / динамическую ссылку после этого проекта GitHub.
Вот ссылка, которая создается: https://appcode.app.goo.gl/?link=http://example.com/-example&apn=com.abc.xxx&amv=16&ad=0&extraParameter=null
Это метод, которым я пользуюсь, чтобы поделиться им:
private void shareDeepLink(String deepLink) {
Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("text/plain");
intent.putExtra(Intent.EXTRA_SUBJECT, "Firebase Deep Link");
intent.putExtra(Intent.EXTRA_TEXT, deepLink);
itemView.getContext().startActivity(intent);
}
Это intent-filters
определены в моем приложении AndroidManifest.xml
файл:
<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:host="example.com" android:scheme="http"/>
<data android:host="example.com" android:scheme="https"/>
</intent-filter>
Вот так я и пытаюсь получить общий deep-link
:
boolean autoLaunchDeepLink = false;
AppInvite.AppInviteApi.getInvitation(mGoogleApiClient, this, autoLaunchDeepLink)
.setResultCallback(
new ResultCallback<AppInviteInvitationResult>() {
@Override
public void onResult(@NonNull AppInviteInvitationResult result) {
if (result.getStatus().isSuccess()) {
// Extract deep link from Intent
Intent intent = result.getInvitationIntent();
final String deepLink = AppInviteReferral.getDeepLink(intent);
Log.d("deepLinkMainActivity", deepLink);
} else {
Log.d("getInvitation", "getInvitation: no deep link found.");
}
}
});
Вот что выходит из системы (получено по ссылке): http://example.com/-example
Как вы можете ясно видеть, я не получаю точную глубокую ссылку, которая была создана, и вместо этого я получаю ее измененную версию. Зачем?
И как я могу получить точно такую же глубокую ссылку, которая была создана и распространена?
2 ответа
Вы правильно получаете диплинк
Это полная сгенерированная ссылка, содержащая информацию, такую как apn: имя пакета вашего приложения, информация, которую нужно знать, например, какое приложение нужно открыть
Это ваша диплинк ссылка = http://example.com/-example. Итак, если вы хотите добавить больше параметров, вы можете сделать это здесь, как в примере ниже
ссылка = http://example.com/-example&blabla.
Таким образом, у вас есть это в результате https://appcode.app.goo.gl/?link=http://example.com/-example&blabla&apn=com.abc.xxx&amv=16&ad=0
Если вы хотите, эта часть может быть закодирована http://example.com/-example&blabla
Вы можете попробовать это и дайте мне знать.
Вы можете сослаться на эту информацию здесь https://firebase.google.com/docs/dynamic-links/android
Замещать
<data
android:host="xxx.abc.com"
android:scheme="https"/>
с
<data
android:host="example.com"
android:scheme="http"/>
Я тоже столкнулся с этой проблемой. Проблема заключалась в том, что я получаю ссылку "Длинная ссылка". Мы можем создать два типа ссылок из firebase:
- Короткая ссылка https://appcode.app.goo.gl/?email=abc@gmail.com
- Длинная ссылка https://appcode.app.goo.gl/?link=http://example.com/-example&apn=com.abc.xxx&amv=16&ad=0&extraParameter=null
Вот почему я столкнулся с этой проблемой. Я решил это, получив всю ссылку из
Uri uriData = intent.data
И чтобы получить конкретный параметр запроса по ссылке:
String email = uriData.getQueryParameter("email")
Надеюсь, это кому-нибудь поможет!!