Как получить экземпляр / нестандартный токен FirebaseDynamicLinks из динамической ссылки, не запуская действие, диалоговое окно устранения неоднозначности.? - PullRequest
0 голосов
/ 03 октября 2019

Из моего приложения я сканирую QR-код с веб-сайта, чтобы сделать то же имя пользователя в приложении. Мой подход сейчас:

Я открываю результат кода qr: // https://example.page.link/g8uj79dsfsdfy8qrf5Bp6

   val openURL = Intent(android.content.Intent.ACTION_VIEW)

    openURL.data = Uri.parse(rawResult.getText())
    startActivity(openURL)

приложение перезапускается и переходит к деятельности, где я установил

    FirebaseDynamicLinks.getInstance()
        .getDynamicLink(intent)
        .addOnSuccessListener(this) { pendingDynamicLinkData ->
            // Get deep link from result (may be null if no link is found)
            var deepLink: Uri? = null
            if (pendingDynamicLinkData != null) {
                deepLink = pendingDynamicLinkData.link
            }

из DeepLink я получаю пользовательский токен, затем аутентифицируюсь с помощью пользовательского токена и получаю ID пользователя

  customToken?.let {
        auth.signInWithCustomToken(it)
            .addOnCompleteListener(this) { task ->
                if (task.isSuccessful) {
                    // Sign in success
                    Log.d(TAG, "signInWithCustomToken:success")
                    val user = auth.currentUser

Я не хочу перезапускать и выбирать вариант веб-сайта или приложения. Итак, как я могу получить назначение динамической ссылки, не запуская новое действие?

1 Ответ

1 голос
/ 08 ноября 2019

Это решение, которое я придумала, чтобы избежать запуска нового диалога действий и устранения неоднозначности:

override fun handleResult(rawResult: Result) {

    val openURL = Intent(Intent.ACTION_VIEW)
    openURL.data = Uri.parse(rawResult.text)

    FirebaseDynamicLinks.getInstance(currentfirebaseApp)
    .getDynamicLink(openURL).addOnSuccessListener {

         var deepLink: Uri? = null

         if (it != null) {
             deepLink = it.link

             val customToken = deepLink?.toString()?.substringAfter(delimiter = "*****?customToken=", missingDelimiterValue = "Token Not found")

         }

         else {
             Toast.makeText(activity!!.applicationContext,
                 "Invalid QR code",
                 Toast.LENGTH_SHORT).show()

         }

     }

}

Вместо того, чтобы открывать ссылку, я только создаю намерение и использую его с Firebase SDK.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...