Articles of firebase cloud messaging

Android无法扩展Firebase Messaging Service

我正在尝试在我的应用程序中实现Firebase云消息传递,我已经实现了使用此服务的所有设置,但是当我尝试在我的类中扩展FirebaseMessagingService时它给了我错误,它根本找不到它,我不能甚至可以import com.google.firebase.messaging.FirebaseMessagingService ,如图所示: 我添加了所有必需的代码:我将其添加到app gradle compile ‘com.google.firebase:firebase-core:9.4.0’ apply plugin: ‘com.google.gms.google-services’ 这对模块gradle: classpath ‘com.google.gms:google-services:3.0.0’ 这是清单代码: 我将谷歌json文件添加到应用程序。 所以,如果有人能帮助我,请

Firebase云消息传递 – onMessageReceived无法正常工作

我想在我的应用中制作一个简单的通知function。 我关注了这个 YouTubevideo以及这两个Firebase文档url1和2以及Android Studio中的Firebase工具助手(我说我已连接到Firebase)。 出于某种原因,按照我的旧应用程序上的这些步骤和文档(下面发布的代码),它将不允许我接收通知。 但是,如果我在一个全新的应用程序上执行相同的步骤,它将完美运行。 我在后台,活动和终止状态下测试了同一物理设备和环境中的两个应用程序。 每次我创建的新演示应用程序都没有问题,但我想要通知的旧应用程序不起作用。 两者均未经过设备ID测试。 我甚至没有得到任何错误日志或任何TAG日志。 我认为我的一个编译项目是干扰的,不确定究竟是什么,但我可能要看那里。 我还检查了所有这些SOpost: 1 2 3及更多 PS。 我在下面删除了我的包名,我在FireBase上多次检查并且它们匹配,所以我知道这不是问题。 但是,我的新演示应用程序的FireBase显示我的应用程序连接但我的旧应用程序的FireBase没有。 此外,我之前设置了赏金,但仍然遇到了同样的问题。 这是我有问题的代码: Notification.java(它的文档要求的服务) public class Notification extends FirebaseMessagingService { public Notification() { } @Override public void onMessageReceived(RemoteMessage remoteMessage) { showNotification(remoteMessage.getData().get(“message”)); Log.d(“FMC”, “Message Notification Body: ” + remoteMessage.getNotification().getBody()); } private void showNotification(String message) { Intent i=new Intent(this, SplashScreen.class); […]

Android:NetworkInfo.isConnected()上的NullPointerException与Firebase

有时,在不同的手机(Android 7)上会出现这种情况: Fatal Exception: java.lang.RuntimeException: Error receiving broadcast Intent { act=android.net.conn.CONNECTIVITY_CHANGE flg=0x4000010 (has extras) } in com.google.firebase.iid.zzae@3c68978 at android.app.LoadedApk$ReceiverDispatcher$Args.run(LoadedApk.java:1178) at android.os.Handler.handleCallback(Handler.java:751) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:154) at android.app.ActivityThread.main(ActivityThread.java:6321) at java.lang.reflect.Method.invoke(Method.java) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776) Caused by java.lang.NullPointerException: Attempt to invoke virtual method ‘boolean android.net.NetworkInfo.isConnected()’ on a null object reference at com.google.firebase.iid.zzad.zzchr(Unknown Source) at com.google.firebase.iid.zzae.onReceive(Unknown Source) at […]

FCM在第一条消息后返回错误:NotRegistered

我按照firebase.google.com上的说明在我的项目中添加了FCM。 一切都很好,我已经在我的日志中收到消息“FirebaseApp初始化成功”和新鲜令牌。 但它不起作用……只有我发送给令牌的第一个推送通知我才能获得成功。 第二次推送和rest得到错误“NotRegistered”。 文档说 如果它是NotRegistered,您应该从服务器数据库中删除注册ID,因为从设备卸载了应用程序,或者客户端应用程序未配置为接收消息。 但是应用程序未被删除,客户端应用程序配置为接收消息,因为第一条消息来到客户端

如何从Firebase控制台删除主题? (FCM)

有谁知道如何从Firebase控制台删除客户端主题?

Firebase消息传递NoSuchMethodError.zzUrexception

我正在尝试将FCM集成到Android项目中,因为它是用Firebase文档编写的。 我的应用程序的gradle: dependencies { compile fileTree(include: [‘*.jar’], dir: ‘libs’) testCompile ‘junit:junit:4.12’ … compile ‘com.android.support:multidex:1.0.0’ compile ‘com.android.support:support-v4:20.0.0’ compile ‘com.google.firebase:firebase-core:9.2.0’ compile ‘com.google.firebase:firebase-config:9.2.0’ compile ‘com.google.firebase:firebase-messaging:9.0.2’ compile ‘com.google.firebase:firebase-crash:9.2.0’ compile ‘com.google.android.gms:play-services-ads:9.2.0’ compile ‘com.google.android.gms:play-services-analytics:9.2.0’ compile ‘com.google.android.gms:play-services-games:9.2.0’ } apply plugin: ‘com.google.gms.google-services’ 的Manifest.xml: 和MyFirebaseMesagingService: public class MyFirebaseMessagingService extends FirebaseMessagingService { @Override public void onMessageReceived(RemoteMessage remoteMessage) { Log.i(“info”, “From: ” + remoteMessage.getFrom()); Log.i(“info”, “Notification […]

发送FCM消息时的状态否定

我正在订阅一个主题,这是我在Android中的应用程序版本。 FirebaseMessaging.getInstance().subscribeToTopic(APP_VERSION); 现在,每次我启动更新时,我都必须取消订阅旧版本并订阅新版本,因此如果我发送更新通知,则只有旧用户才能获得更新。 相反,如果我只是否定一个版本,那就太棒了。 “condition”: “!’2.1.1′ in topics”, 在FCM中是否存在类似的内容?

发送一个通知后未注册的令牌错误

我在使用Firebase时遇到了Android应用程序的这个戏剧性问题。 1.我的应用程序在第一次启动时收到令牌2.我能够从firebase控制台向注册令牌发送通知3.如果我尝试在步骤2之后再次使用控制台发送通知。它向我显示“未注册令牌”在第二次尝试之后。 我已经在清单中有所有必要的配置,google service.json文件也已正确配置。 我相信事情是正确的,因为应用程序能够接收一次通知,问题才会在此之后开始。 更新1:如果我卸载应用程序并重新安装它,那么我也只能收到一次通知。 那些想要查看代码的人,这就是我获取令牌的方式: @Override public void onTokenRefresh() { //Getting registration token refreshedToken = FirebaseInstanceId.getInstance().getToken(); //Displaying token on logcat Log.d(TAG, “Refreshed token: ” + refreshedToken); saveDeviceToken(refreshedToken); } 这只能在第一次启动时调用,之后,我还没有看到它被调用(我认为这是预期的行为)。 收到的OnMessage也会在第一次通知时被调用,然后它永远不会被取消: @Override public void onMessageReceived(RemoteMessage remoteMessage) { Log.d(“FCM”, “From: ” + remoteMessage.getFrom()); if (remoteMessage.getNotification() != null) { Log.d(“FCM”, “Notification Message Body: ” + remoteMessage.getNotification().getBody()); […]

Firebase云消息传递 – 如何validation令牌?

我正在使用Firebase云消息传递(FCM),并且每次在客户设备上生成新令牌时,根据下面的代码…我将这个新的TOKEN发送到我的服务器数据库(云),我保存它以便能够使用CFM API将未来的推送通知从服务器发送到设备。 //public class CFMInstanceIDService extends FirebaseInstanceIdService … public void onTokenRefresh() { … String cfmToken = FirebaseInstanceId.getInstance().getToken(); … sendRegistrationToServer(customerGuid, cfmToken); } 通过这样做,我在服务器上有一个客户登录的所有(多个)设备的列表。 (平板电脑,手机,iPhone,Android等) 有没有办法随时validation/validation令牌? 我想知道/确保我与客户关联的所有令牌都属于真实设备。 我不想将推送通知发送给不存在的令牌。

Firebase FCM令牌 – 何时发送到服务器?

好的,所以我有一个应用程序,在第一次启动时将带您浏览一些欢迎幻灯片,然后转到登录/注册页面,然后转到MainActivity 。 我刚刚实现了FCM ,并且服务在用户看到任何这些页面之前生成token 。 我怎样才能使这个服务在我到达MainActivity 后运行? 问题是我正在尝试在将令牌刷新到MySQL DB到相应的用户帐户时立即发送令牌,但由于用户尚未登录,因此该值为null并且我向服务器发送的消息失败。 设计这个有什么好办法? 我想过在SharedPreferences中保存令牌并在用户登录后将其发送到服务器但是在稍后刷新令牌时会产生很多复杂因素?! 可能的方法 : 我不确定我是否完全理解2服务如何运行但是在onTokenRefresh我只是将令牌保存到SharedPreferences而在MainActivity中我从SP获取值然后将其发送到服务器。 在这种情况下,当刷新令牌时,新值将立即再次进入SharedPreferences 。 但我仍然需要检查它是否是SP中的新值,然后将其重新上载到服务器。 这令人困惑!