android - 在应用的发行版中,三星设备中未生成FCM token

标签 android firebase kotlin firebase-cloud-messaging samsung-mobile

我正在使用FCM在我的应用中发送通知。我的应用程序的第一个版本处于测试阶段,由于这些设备未生成FCM token ,因此Samsung设备出现错误。这是我生成 token 的代码:

FirebaseInstanceId.getInstance().instanceId.addOnCompleteListener(OnCompleteListener { task ->
                    if (!task.isSuccessful) {
                        return@OnCompleteListener
                    }

                    // Get new Instance ID token
                    val token = task.result?.token

                    val ref = FirebaseDatabase.getInstance().getReference("/users/$uid")
                    ref.child("Message Token").setValue(token)

                })

我还在Google Play版本的SplashActivity中保留了支票。这是代码:
private fun checkPlayServices() {
    val apiAvailability = GoogleApiAvailability.getInstance()
    val resultCode = apiAvailability.isGooglePlayServicesAvailable(this)
    if (resultCode != ConnectionResult.SUCCESS)
    {
        if (apiAvailability.isUserResolvableError(resultCode))
        {
            val dialog: Dialog = apiAvailability.getErrorDialog(this, resultCode, PLAY_SERVICES_RESOLUTION_REQUEST)
            dialog.setCancelable(false)
            dialog.setCanceledOnTouchOutside(false)
            dialog.show()
        }
        else
        {
            Log.d("Demo App", "This device is not supported.")
            val dialogApp = AlertDialog.Builder(this@SplashActivity)
            dialogApp.setTitle("Error")
            dialogApp.setMessage("Some features in the app may not work in your device. Download latest version of play services?")
            dialogApp.setCancelable(false)
            dialogApp.setPositiveButton("OK"
            ) { _, _ ->
                GoogleApiAvailability.getInstance().makeGooglePlayServicesAvailable(this).addOnSuccessListener { Toast.makeText(this@SplashActivity,"Google Play Services Updated. Please Logout and Re-Login", Toast.LENGTH_LONG).show() }
                    .addOnFailureListener { Toast.makeText(this@SplashActivity,"Could not update Google Play Services", Toast.LENGTH_LONG).show() }
            }.setNegativeButton("No"){_, _ ->
            }
            dialogApp.show()
        }

    }
}

要添加到上面。当我在三星真实设备的调试版本以及仿真器中进行测试时, token 已正确生成。实际上,我直接从Android Studio安装了一个三星设备。在这里工作正常。后来我尝试从Play商店在此设备上安装该应用。但是PlayStore出现了问题,此后没有下载发生。我必须将PlayStore恢复为出厂设置。发布后,PlayStore开始正常运行。但是没有生成 token 。

任何帮助将不胜感激。

最佳答案

问题出在Proguard。虽然没有直接的方法可以解决此问题,但我可以找到一种解决方法。在proguard-rules.pro文件中,我添加了以下行:

-keep com.google.firebase类。** {*; }

这是为了确保Firebase不会删除Firebase类。到目前为止,即使在三星设备中,一切仍可以正常工作

关于android - 在应用的发行版中,三星设备中未生成FCM token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59852062/

相关文章:

javascript - 火力地堡错误 :The photoURL field must be a valid URL

kotlin - 如何在 Kotlin 中插入带有外键的记录?

java - 在android中创建全局函数

Firebase 功能 v1 配置不检索配置

android - 来自 AsyncTask 和 Activity 的数据库访问 - 锁定。解决方案?

javascript - 单击按钮后刷新并重定向页面

android - 如何在 Android 中添加对普通 Java Lib 的 Kotlin 支持?

kotlin - kotlin如何共享常见的改造响应处理程序代码

android - 有什么方法可以从 android 上收到的短信中获取发件人电话号码?

android - 在 EditText 中显示密码的最后一个字符