sinch 库 3.12.2 托管推送通知错误
sinch library 3.12.2 managed push notification error
我在尝试迁移到 FireBase 托管推送时遇到错误,我尝试使用 class FCMservice 作为示例中的推送应用程序,但我的应用程序崩溃并显示此日志:
FATAL EXCEPTION: AsyncTask #3
Process: com.galsa.example, PID: 17415
java.lang.RuntimeException: An error occurred while executing doInBackground()
at android.os.AsyncTask.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.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.call(AsyncTask.java:304)
at java.util.concurrent.FutureTask.run(FutureTask.java:237)
at android.os.AsyncTask$SerialExecutor.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)
IN BREIF: 很可能在应用程序的 gralde 文件中未正确配置 Firebase 服务依赖项。您应该在 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" />
如果缺少这部分,那肯定是您的应用程序构建配置问题,请再次查看我们的推送示例应用程序。如果存在,请确保没有冲突的库版本,比如如果您使用 google 的播放服务,它们应该像这样匹配:
compile 'com.google.android.gms:play-services:11.0.1'
compile 'com.google.firebase:firebase-messaging:11.0.1'
最后,确保使用最新版本的库。 11.0.1 在我们的测试中看起来不错。
此致,
维克多
首先,您需要在根 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
文件并将其放在项目的根文件夹中。
我在尝试迁移到 FireBase 托管推送时遇到错误,我尝试使用 class FCMservice 作为示例中的推送应用程序,但我的应用程序崩溃并显示此日志:
FATAL EXCEPTION: AsyncTask #3
Process: com.galsa.example, PID: 17415
java.lang.RuntimeException: An error occurred while executing doInBackground()
at android.os.AsyncTask.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.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.call(AsyncTask.java:304)
at java.util.concurrent.FutureTask.run(FutureTask.java:237)
at android.os.AsyncTask$SerialExecutor.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)
IN BREIF: 很可能在应用程序的 gralde 文件中未正确配置 Firebase 服务依赖项。您应该在 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" />
如果缺少这部分,那肯定是您的应用程序构建配置问题,请再次查看我们的推送示例应用程序。如果存在,请确保没有冲突的库版本,比如如果您使用 google 的播放服务,它们应该像这样匹配:
compile 'com.google.android.gms:play-services:11.0.1'
compile 'com.google.firebase:firebase-messaging:11.0.1'
最后,确保使用最新版本的库。 11.0.1 在我们的测试中看起来不错。
此致, 维克多
首先,您需要在根 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
文件并将其放在项目的根文件夹中。