gpt4 book ai didi

android - Marshmallow(API 级别 23)Firebase 消息传递不起作用

转载 作者:塔克拉玛干 更新时间:2023-11-02 18:59:12 24 4
gpt4 key购买 nike

一段时间以来,我一直在尝试在我的应用中实现 Firebase 消息传递。我遵循了不同类型的教程,包括 Firebase 的官方教程,使用 Firebase Assistant 手动和自动添加它。

出于某种原因,以下陈述是正确的:

  • onTokenRefresh() 在扩展 FirebaseInstanceIdService 的类中,是从来没有打电话。
  • onMessageReceived(remoteMessage: RemoteMessage?) 在永远不会调用扩展 FirebaseInstanceIdService 的类。
  • 没有收到消息

MyFirebaseInstanceIDService:

class MyFirebaseInstanceIDService : FirebaseInstanceIdService() {

val TAG = javaClass?.simpleName

override fun onTokenRefresh() {
super.onTokenRefresh()
val refreshedToken = FirebaseInstanceId.getInstance().token
System.out.println("firebasedebug (" + TAG + "): onTokenRefresh(): " + refreshedToken)
}
}

MyFirebaseMessagingService

class : FirebaseMessagingService() {

val TAG = javaClass?.simpleName

override fun onMessageReceived(remoteMessage: RemoteMessage?) {
super.onMessageReceived(remoteMessage)
System.out.println("firebasedebug (" + TAG + "): onMessageReceived(remoteMessage: " + remoteMessage+")")
}
}

我已将以下内容添加到我的 list 中:

<meta-data
android:name="com.google.firebase.messaging.default_notification_channel_id"
android:value="@string/default_notification_channel_id"/>

<service
android:name="dk.myapp.service.firebase.MyFirebaseMessagingService"
android:exported="false">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT"/>
</intent-filter>
</service>

<service
android:name="dk.myapp.service.firebase.MyFirebaseInstanceIDService"
android:exported="false">
<intent-filter>
<action android:name="com.google.firebase.INSTANCE_ID_EVENT"/>
</intent-filter>
</service>

(请注意,我已尝试将导出设置为 true 和 false,以及使用和不使用用于设置 channel 的元标记)

我还在我的应用程序类中添加了以下内容:

FirebaseApp.initializeApp(this);

显然,当我尝试通过 Firebase 使用方法“getToken()”时,这是必需的。 A 也尝试过使用和不使用这些方法。

在我的主要 Activity 中,我尝试通过 Firebase 放置“getToken()”方法来尝试触发 token 的初始化,但仍然没有成功。

FirebaseInstanceId.getInstance().token

当然,我已经将消息传递库(和 google play 服务模块)添加到我的应用程序模块 gradle 中:

compile 'com.google.firebase:firebase-messaging:15.0.0'
compile 'com.google.android.gms:play-services-ads:15.0.0'
compile 'com.google.android.gms:play-services-maps:15.0.0'
compile 'com.google.android.gms:play-services-base:15.0.0'
compile 'com.google.android.gms:play-services-location:15.0.0'

An 还在 gradle 文件的底部添加了这一行:

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

将这些添加到我的项目 gradle 中:

   buildscript {
ext.kotlin_version = '1.1.4-2'
ext.anko_version = '0.10.2'
repositories {
mavenCentral()
jcenter()
google()
}
dependencies {
...
classpath 'com.google.gms:google-services:3.2.1' // google-services plugin
...
}
allprojects {
tasks.withType(JavaCompile) {
sourceCompatibility = "1.7"
targetCompatibility = "1.7"
}
}
}

allprojects {
repositories {
maven {
url "https://maven.google.com" // Google's Maven repository
}
}
}

编辑:我当然也将 google-services.json 添加到项目中

通过 Firebase 仪表板发送消息时,我尝试过: - 进入 channel - 将目标设置为用户分割 - 将目标设置为单一设备(来自应用程序的 token ) - ...

我也尝试过类似的东西: - 每当我尝试新方法时卸载并重新安装应用程序 - 删除 instanceid 并再次调用 getToken - 尝试调试和非 Debug模式 - ...

这是我的发送消息列表在仪表板中的样子:

enter image description here

如果需要更多详细信息,请告诉我,我当然会提供(如果可能)。

编辑我试用了 REST API 并进行了一些观察。

  • 第一次尝试发送标准通知时,我收到了成功的响应:1 和失败:0,但之后(失败:1)出现“错误”:“NotRegistered”(见下图)

enter image description here

  • 我每次都能得到 200 美元的返回。
  • 如果我卸载/重新安装该应用程序并使用新 token ,则会再次发生与上述相同的事情。
  • 所有尝试都没有在设备上给我一个可见的推送消息,也没有调用 onMessageReceived 方法,我已经通过代码中的日志消息和 syso 以及调试器对此进行了测试。

最佳答案

我终于找到了适合我的特殊情况的解决方案。

我的解决方案是从应用程序标签中的 list 文件中删除以下行:

android:label="@string/app_name"
tools:node="replace"
tools:replace="android:icon,android:label"

关于android - Marshmallow(API 级别 23)Firebase 消息传递不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50174010/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com