【问题标题】:sinch library 3.12.2 managed push notification errorsinch library 3.12.2 托管推送通知错误
【发布时间】:2017-11-08 17:53:59
【问题描述】:

我在尝试迁移到 FireBase 托管推送时出错,我尝试在示例中使用类 FCMservice 作为推送应用程序,但我的应用程序崩溃并给出以下日志:

FATAL EXCEPTION: AsyncTask #3
                                                                   Process: com.galsa.example, PID: 17415
                                                                   java.lang.RuntimeException: An error occurred while executing doInBackground()
                                                                       at android.os.AsyncTask$3.done(AsyncTask.java:318)
                                                                       at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:354)
                                                                       at java.util.concurrent.FutureTask.setException(FutureTask.java:223)
                                                                       at java.util.concurrent.FutureTask.run(FutureTask.java:242)
                                                                       at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:243)
                                                                       at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
                                                                       at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
                                                                       at java.lang.Thread.run(Thread.java:762)
                                                                    Caused by: java.lang.IllegalStateException: Default FirebaseApp is not initialized in this process com.galsa.example. Make sure to call FirebaseApp.initializeApp(Context) first.
                                                                       at com.google.firebase.FirebaseApp.getInstance(Unknown Source)
                                                                       at com.google.firebase.iid.FirebaseInstanceId.getInstance(Unknown Source)
                                                                       at com.sinch.android.rtc.internal.client.fcm.FcmTask.doInBackground(Unknown Source)
                                                                       at com.sinch.android.rtc.internal.client.fcm.FcmTask.doInBackground(Unknown Source)
                                                                       at android.os.AsyncTask$2.call(AsyncTask.java:304)
                                                                       at java.util.concurrent.FutureTask.run(FutureTask.java:237)
                                                                       at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:243) 
                                                                       at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133) 
                                                                       at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607) 
                                                                       at java.lang.Thread.run(Thread.java:762)

【问题讨论】:

    标签: android sinch android-sinch-api


    【解决方案1】:

    简述: 很可能 Firebase 服务依赖项在应用程序的 gralde 文件中未正确配置。您应该在 Firebase 控制台中注册您的应用程序,将 google-services.json 文件下载到您的应用程序主文件夹中,Firebase gradle 插件可以在其中找到它,它将为您完成所有工作。尝试构建并运行我们的示例推送应用程序,查看

    的 gradle 文件

    apply plugin: 'com.google.gms.google-services'

    详情:您可以在崩溃日志中看到:

    …Default FirebaseApp is not initialized in this process com.galsa.example. Make sure to call FirebaseApp.initializeApp(Context) first.

    但实际上,Firebase 如果正确添加到项目中,会自动为您完成所有工作,包括初始化调用。你可以在这里找到很好的解释:https://firebase.googleblog.com/2016/12/how-does-firebase-initialize-on-android.html。要将 Firebase 功能添加到您的应用程序中,理论上需要做很多事情——定义资源、使用服务声明和权限嵌入清单、添加依赖项 jars/aars,最后提供一些代码以向 SDK 提供应用程序上下文以进行初始化。幸运的是,有一个 Firebase 开发人员提供的 gradle 插件,可以为您完成所有这些工作。但是,要使其正常工作,它需要 google-services.json,您可以从 Firebase 控制台下载。如果您查看我们的推送示例应用程序的 build.gradle 文件,您会发现它以 apply plugin: 'com.google.gms.google-services' 命令结束,该命令运行插件并发挥了“魔力”。如果一切顺利,您应该在 .apk 的合并清单中看到如下内容:

    <provider
        android:name="com.google.firebase.provider.FirebaseInitProvider"
        android:exported="false"
        android:authorities="…"
        android:initOrder="100" />
    

    如果这部分缺失,那肯定是您的应用构建配置问题,请再次查看我们的推送示例应用。如果存在,请确保没有冲突的库版本,例如,如果您使用谷歌的播放服务,它们应该像这样匹配:

    compile 'com.google.android.gms:play-services:11.0.1'
    compile 'com.google.firebase:firebase-messaging:11.0.1'
    

    最后,确保使用最新版本的库。 11.0.1 在我们的测试中看起来不错。

    最好的问候, 维克多

    【讨论】:

      【解决方案2】:

      首先,您需要在根 gradle 文件的依赖项中添加这一行:

      classpath 'com.google.gms:google-services:3.1.0'
      

      那么你必须在你的项目 gradle 文件的依赖项中添加这一行:

      implementation 'com.google.firebase:firebase-messaging:11.6.0'
      

      并在项目 gradle 文件的末尾添加这一行:

      apply plugin: 'com.google.gms.google-services'
      

      那么您必须按照link 中的步骤生成google-services.json 文件并将其放在项目的根文件夹中。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-03-27
        相关资源
        最近更新 更多