我有一项服务,使用Firebase云消息传递使用带参数集的FCM数据消息与其Android客户端进行通信collapse_key.从有关可折叠键的文档:
当有较新的消息呈现较旧的线程时,相关消息与客户端应用程序无关,FCM将替换旧消息.例如,发送到同步或过时的通知消息.
这就是我要找的东西.我不需要所有更新,只需要最后一个.但是,如果用户在线,我需要尽快.
但是,我得到一个奇怪的速率限制,不会导致任何HTTP错误代码.它很容易重现,只需要连续20条数据消息并监控android FirebaseMessagingService.onMessageReceived:
for i in {1..20}; do
curl -v -X POST --header "Authorization: key=$SERVER_KEY" \
--Header "Content-Type: application/json" \
https://fcm.googleapis.com/fcm/send \
-d "{\"to\":\"$CLIENT_TOKEN\", \
\"data\":{\"counter\":\"$i\"}, \
\"priority\":\"high\", \
\"collapse_key\": \"test\" \
}"
done
Run Code Online (Sandbox Code Playgroud)
上面的bash脚本有点难以阅读,但我有一个counter我感兴趣的变量.
收到一些消息后(counter=~10)它会停止,您需要切换网络状态以获取最后一条消息counter=20.最后一条消息也会在几分钟(通常约10分钟)后出现,此时请求进行火力登记(?).
collapse_key从上面的curl命令中删除会导致收到所有20条消息(其中counter={1..20}).
所以,问题是:这是一个错误吗?或者我关闭(/率限制),因为我"滥用"界面(因为所有请求都发回一个200响应,我以为我没事).
目前使用 react-native-firebase 和 react-native-push-notification。一切都很好,直到今天突然间 firebase 消息传递开始导致应用程序崩溃。错误消息如下:
Process: com.packagename, PID: 30087
java.lang.AbstractMethodError: abstract method "com.google.android.gms.tasks.Task com.google.firebase.iid.WithinAppServiceBinder$IntentHandler.zza(android.content.Intent)"
at com.google.firebase.iid.WithinAppServiceBinder.zza(com.google.firebase:firebase-iid@@20.2.2:9)
at com.google.firebase.iid.zzaw.zza(com.google.firebase:firebase-iid@@20.2.2:30)
at com.google.firebase.iid.zzaw.onServiceConnected(com.google.firebase:firebase-iid@@20.2.2:59)
at android.app.LoadedApk$ServiceDispatcher.doConnected(LoadedApk.java:2067)
at android.app.LoadedApk$ServiceDispatcher$RunConnection.run(LoadedApk.java:2099)
at android.os.Handler.handleCallback(Handler.java:883)
at android.os.Handler.dispatchMessage(Handler.java:100)
at android.os.Looper.loop(Looper.java:237)
at android.app.ActivityThread.main(ActivityThread.java:8016)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1076)
Run Code Online (Sandbox Code Playgroud)
当收到通知但不触发数据消息时会发生错误。此外,在导致崩溃之前接收和处理通知。
我认为错误可能是由更改 react-native-firebase/app 版本引起的,所以我将 git 上的项目恢复到以前的工作版本。但是,在清理和重建后,我仍然遇到相同的错误。即使在反应本机端没有设置通知侦听器,它也会发生,尽管我不确定实际本机代码需要什么。可能是什么问题?我正在使用以前可用的 react-native-firebase/messaging (7.1.5) 和 react-native-firebase/app (7.2.0) 版本。
android firebase react-native firebase-cloud-messaging abstractmethoderror
在新的Firebase中,在通知下,他们提到开发人员可以向特定设备发送通知.为此,在控制台中它要求一个FCM令牌.究竟是什么,我如何获得该令牌?
android firebase firebase-cloud-messaging firebase-notifications
我正在开发一个Android应用程序,它使用Firebase身份验证,数据库和存储.一切正常,直到这个错误消息开始出现在logcat中.(我没有在firebae控制台上篡改任何配置)
E/FirebaseInstanceId: Token retrieval failed: SERVICE_NOT_AVAILABLE
Run Code Online (Sandbox Code Playgroud)
即使我已经评论了所有与firebase相关的代码,也会显示此错误消息.
因此,我无法继续进行身份验证和其他firebase相关的事情.
是的,我已连接到互联网,并且还从Firebase控制台获得了一个新的Google-Services.json文件,但它完全没有任何区别.
我正在尝试从 Node.js API 向 Flutter 应用程序发送通知。\n首先,我想让我的应用程序能够接收来自 Firebase 的通知。
\n但是,当我初始化App时,我遇到了一个问题:
\n\n\nPlatformException (PlatformException(null-error, 主机平台\n非空返回值返回空值。, null, null))
\n
在控制台中:
\nE/flutter (25357): [ERROR:flutter/lib/ui/ui_dart_state.cc(198)] Unhandled Exception: PlatformException(null-error, Host platform returned null value for non-null return value., null, null)\nE/flutter (25357): #0 FirebaseCoreHostApi.optionsFromResource (package:firebase_core_platform_interface/src/pigeon/messages.pigeon.dart:250)\npackage:firebase_core_platform_interface/\xe2\x80\xa6/pigeon/messages.pigeon.dart:1\nE/flutter (25357): <asynchronous suspension>\nE/flutter (25357): #1 MethodChannelFirebase.initializeApp (package:firebase_core_platform_interface/src/method_channel/method_channel_firebase.dart:89)\npackage:firebase_core_platform_interface/\xe2\x80\xa6/method_channel/method_channel_firebase.dart:1\nE/flutter (25357): <asynchronous suspension>\nE/flutter (25357): #2 Firebase.initializeApp (package:firebase_core/src/firebase.dart:40)\npackage:firebase_core/src/firebase.dart:1\nE/flutter (25357): <asynchronous suspension>\nE/flutter (25357): #3 main (package:notifappfcm/main.dart:13)\npackage:notifappfcm/main.dart:1\nRun Code Online (Sandbox Code Playgroud)\n我一直在寻找解决这个问题的办法,但实在找不到。
\n这是我的应用程序代码:
\n主程序.dart
\nimport \'package:firebase_messaging/firebase_messaging.dart\';\nimport \'package:flutter/material.dart\';\nimport \'package:firebase_core/firebase_core.dart\';\nimport \'mainscreen.dart\';\n\nFuture<void> _firebadeMessagingBackgroundHandler(RemoteMessage message) async {\n await …Run Code Online (Sandbox Code Playgroud) 当用户在后台点击通知时,我正在尝试打开特定活动.从Docs中,我已经知道必须在有效负载中添加click_action,并在App中使用intent过滤来处理它.但是,如何通过Firebase控制台在Firebase通知中添加click_action?我也对任何其他工作开放.提前致谢.
android android-notifications firebase-cloud-messaging firebase-notifications
谷歌刚刚宣布谷歌云消息传递现在是Firebase云消息传递.这对GCM的现有用户意味着什么?需要哪些迁移(如果有的话)?
android firebase google-cloud-messaging firebase-cloud-messaging
我是firebase的新手,我正在学习它,就像一个学习走路的小孩.到目前为止,我已经设法使用firebase框架为我的手机生成的令牌向我自己的手机发送消息.现在这里变得棘手(在我看来).onTokenRefresh()在FirebaseInstanceIdService扩展服务中调用了一个方法.因为它被称为刷新,然后我假设它会改变.我想知道何时创建此令牌以及何时更改它?
如果它发生变化,假设我发送的消息带有令牌"A"的设备,该设备现在处于脱机状态,因此它将排队.现在,当设备上线时,它会将令牌"刷新"为"B".现在,由于消息应该传递给令牌"A",因此永远不会传递消息.我该如何处理这种情况?
应明确实施如何使用Firebase通知和数据.我读了很多答案,但似乎无法使其发挥作用.这是我的步骤:
1.)我在PHP中将通知和数据传递给android,它看起来很好:
$msg = array
(
"body" => $body,
"title" => $title,
"sound" => "mySound"
);
$data = array
(
"user_id" => $res_id,
"date" => $date,
"hal_id" => $hal_id,
"M_view" => $M_view
);
$fields = array
(
'registration_ids' => $registrationIds,
'notification' => $msg,
'data' => $data
);
$headers = array
(
'Authorization: key='.API_ACCESS_KEY,
'Content-Type: application/json'
);
$ch = curl_init();
curl_setopt( $ch,CURLOPT_URL, 'https://android.googleapis.com/gcm/send' );
curl_setopt( $ch,CURLOPT_POST, true );
curl_setopt( $ch,CURLOPT_HTTPHEADER, $headers );
curl_setopt( $ch,CURLOPT_RETURNTRANSFER, true );
curl_setopt( $ch,CURLOPT_SSL_VERIFYPEER, false );
curl_setopt( …Run Code Online (Sandbox Code Playgroud) notifications android firebase firebase-realtime-database firebase-cloud-messaging
我正在使用离子框架(Web技术)开发android/ios应用程序,我想在新的firebase功能FCM的帮助下添加推送通知.
现在我正在看以下文档:
https://firebase.google.com/docs/cloud-messaging/chrome/client#project-setup
说的是:
- Chrome中的网站可以通过服务工作者和网络实现推送消息传递
- 应用程序符合Webpush标准.Chrome应用和扩展程序可以直接通过chrome.gcm
API 访问FCM服务.
这是否意味着我可以在我的离子应用程序中使用它同时用于android/ios,因为app是使用cordova构建的?
如果有任何实现的例子,我可以看到和学习,这将是非常有帮助的.
谢谢
push-notification cordova firebase ionic-framework firebase-cloud-messaging