Я пытаюсь настроить динамические ссылки c, чтобы ссылка глубоко связывала пользователя с приложением, если оно уже установлено, и магазином воспроизведения, если он этого не делает. Я ожидаю, что ссылка выживет в процессе установки Play Store и будет отправлена в активную программу запуска со ссылкой. Динамическая ссылка c работает, когда приложение уже установлено. Однако, когда приложение не установлено, оно отправляет пользователя в магазин воспроизведения, но ссылка Dynami c не сохраняется в процессе установки. Я читал, что кнопка «Открыть» должна измениться на «Продолжить», когда пользователь отправляется в магазин воспроизведения с динамической ссылкой c, но когда я это делаю, она по-прежнему говорит «Открыть». Вот моя активность в AndroidManifest. xml.
<activity android:name=".share.DeepLinkActivity"
android:theme="@style/AppTheme"
>
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<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="housebook.com"
android:scheme="https"/>
<data
android:host="housebook.com"
android:scheme="http"/>
</intent-filter>
<intent-filter android:autoVerify="true">
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.DEFAULT"/>
<category android:name="android.intent.category.BROWSABLE"/>
<data
android:host="housebook.page.link"
android:scheme="https"/>
<data
android:host="housebook.page.link"
android:scheme="http"/>
</intent-filter>
</activity>
Вот моя DeepLinkActivity
package chenige.chkchk.wairz.share
import android.app.AlertDialog
import android.content.Intent
import android.os.Bundle
import chenige.chkchk.wairz.BaseActivity
import chenige.chkchk.wairz.landing.LandingActivity
import chenige.chkchk.wairz.model.ShareDeepLink
import chenige.chkchk.wairz.sign_in.SignInActivity
import com.google.firebase.auth.FirebaseAuth
import com.google.firebase.dynamiclinks.FirebaseDynamicLinks
class DeepLinkActivity : BaseActivity() {
companion object {
const val SHARE_DEEP_LINK = "SHARE_DEEP_LINK"
}
var mAuth = FirebaseAuth.getInstance()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
if(intent.data != null){
FirebaseDynamicLinks.getInstance().getDynamicLink(intent).addOnSuccessListener { pendingDynamicLinkData ->
if(pendingDynamicLinkData != null) {
val houseId = pendingDynamicLinkData.link!!.getQueryParameter("House")
val shareId = pendingDynamicLinkData.link!!.getQueryParameter("Share")
goIntoAppWithShare(houseId!!, shareId!!)
}else{
goIntoApp()
}
}.addOnFailureListener {failure ->
showErrorRetrievingLink(failure.message!!)
}
}else{
goIntoApp()
}
}
fun goIntoAppWithShare(houseId: String, shareId: String){
val intent : Intent
if (mAuth.currentUser != null) {
intent = Intent(this, LandingActivity::class.java)
}else{
intent = Intent(this, SignInActivity::class.java)
}
intent.putExtra(SHARE_DEEP_LINK, ShareDeepLink(houseId, shareId))
intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT)
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK)
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
startActivity(intent)
finish()
}
fun goIntoApp(){
val intent : Intent
if (mAuth.currentUser != null) {
intent = Intent(this, LandingActivity::class.java)
}else{
intent = Intent(this, SignInActivity::class.java)
}
startActivity(intent)
finish()
}
fun showErrorRetrievingLink(error: String) {
val dialog = AlertDialog.Builder(this).setTitle("Error Retrieving House").setMessage("HouseBook has had an issue retrieving the shared house.")
.setPositiveButton("Ok.") { dialog, i ->
goIntoApp()
}
dialog.show()
}
}
Я добавил динамическую ссылку c в консоли Firebase как https://housebook.page.link
Я добавил отпечаток сертификата 256 SHA.
Ссылка, которую я ожидаю, но не работаю, https://housebook.page.link/nvfVf7N91D7dgBLV7
Отладка с помощью https://housebook.page.link/nvfVf7N91D7dgBLV7?d=1 показывает только одно предупреждение о фишинге. Я попытался добавить конфигурацию, чтобы убрать это предупреждение go, но это не помогает. Кто-нибудь знает, почему ссылка не переживает процесс установки? Я боролся с этим вот уже 2 недели.