标签: firebase-cloud-messaging

Firebase云消息传递最后没有收到collapse_key(速率有限?)

我有一项服务,使用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响应,我以为我没事).

android firebase firebase-cloud-messaging

48
推荐指数
1
解决办法
1357
查看次数

收到消息时,Android 上的 Firebase 消息突然开始崩溃

目前使用 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

48
推荐指数
4
解决办法
6976
查看次数

Firebase中的FCM令牌是什么?

在新的Firebase中,在通知下,他们提到开发人员可以向特定设备发送通知.为此,在控制台中它要求一个FCM令牌.究竟是什么,我如何获得该令牌?

android firebase firebase-cloud-messaging firebase-notifications

47
推荐指数
4
解决办法
10万
查看次数

FirebaseInstanceId令牌检索失败SERVICE_NOT_AVAILABLE

我正在开发一个Android应用程序,它使用Firebase身份验证,数据库和存储.一切正常,直到这个错误消息开始出现在logcat中.(我没有在firebae控制台上篡改任何配置)

E/FirebaseInstanceId: Token retrieval failed: SERVICE_NOT_AVAILABLE
Run Code Online (Sandbox Code Playgroud)

即使我已经评论了所有与firebase相关的代码,也会显示此错误消息.

因此,我无法继续进行身份验证和其他firebase相关的事情.
是的,我已连接到互联网,并且还从Firebase控制台获得了一个新的Google-Services.json文件,但它完全没有任何区别.

android firebase firebase-cloud-messaging

47
推荐指数
8
解决办法
3万
查看次数

FirebaseCloudMessaging:PlatformException(PlatformException(null-error,主机平台返回非空返回值的空值。,null,null))

我正在尝试从 Node.js API 向 Flutter 应用程序发送通知。\n首先,我想让我的应用程序能够接收来自 Firebase 的通知。

\n

但是,当我初始化App时,我遇到了一个问题:

\n
\n

PlatformException (PlatformException(null-error, 主机平台\n非空返回值返回空值。, null, null))

\n
\n

在控制台中:

\n
E/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\n
Run Code Online (Sandbox Code Playgroud)\n

我一直在寻找解决这个问题的办法,但实在找不到。

\n

这是我的应用程序代码:

\n

主程序.dart

\n
import \'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)

node.js firebase flutter firebase-cloud-messaging

47
推荐指数
6
解决办法
10万
查看次数

Firebase FCM通知click_action有效内容

当用户在后台点击通知时,我正在尝试打开特定活动.从Docs中,我已经知道必须在有效负载中添加click_action,并在App中使用intent过滤来处理它.但是,如何通过Firebase控制台在Firebase通知中添加click_action?我也对任何其他工作开放.提前致谢.

android android-notifications firebase-cloud-messaging firebase-notifications

46
推荐指数
6
解决办法
10万
查看次数

需要从GCM迁移到FCM吗?

谷歌刚刚宣布谷歌云消息传递现在是Firebase云消息传递.这对GCM的现有用户意味着什么?需要哪些迁移(如果有的话)?

android firebase google-cloud-messaging firebase-cloud-messaging

45
推荐指数
2
解决办法
3万
查看次数

firebase的app令牌在什么时期发生变化以及如何管理它?

我是firebase的新手,我正在学习它,就像一个学习走路的小孩.到目前为止,我已经设法使用firebase框架为我的手机生成的令牌向我自己的手机发送消息.现在这里变得棘手(在我看来).onTokenRefresh()FirebaseInstanceIdService扩展服务中调用了一个方法.因为它被称为刷新,然后我假设它会改变.我想知道何时创建此令牌以及何时更改它?

如果它发生变化,假设我发送的消息带有令牌"A"的设备,该设备现在处于脱机状态,因此它将排队.现在,当设备上线时,它会将令牌"刷新"为"B".现在,由于消息应该传递给令牌"A",因此永远不会传递消息.我该如何处理这种情况?

android push-notification firebase firebase-cloud-messaging

44
推荐指数
2
解决办法
3万
查看次数

Firebase(FCM):打开活动并传递有关通知点击的数据.安卓

应明确实施如何使用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

42
推荐指数
2
解决办法
6万
查看次数

使用Ionic应用程序的Firebase云消息传递

我正在使用离子框架(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

40
推荐指数
4
解决办法
5万
查看次数