Python Firebase Admin SDK 显示成功,但我从未收到通知

Cor*_*den 8 python ios firebase firebase-cloud-messaging firebase-admin

我正在尝试使用 Python Firebase Admin SDK 为我的移动应用程序发送推送通知。我已经使用 Firebase 控制台中的通知编辑器对其进行了测试,因此我知道我的设备可以接收推送通知,但当我尝试使用 SDK 时,我从未收到任何内容。我也没有看到 Firebase 控制台通知页面上列出的通知。

这是我用来发送通知的确切代码(减去我的个人信息):

import firebase_admin
from firebase_admin import credentials, messaging

token = "registration token"
creds = credentials.Certificate('path/to/cert.json')
app = firebase_admin.initialize_app(creds)
msg = messaging.Message(data={'title': 'Test'}, token=token)
print(messaging.send(msg, app=app))
Run Code Online (Sandbox Code Playgroud)

这会返回一个遵循格式的 URL /project/<project name>/messages/<message ID>,但该 URL 对我不起作用。它只会将我重定向到 Firebase 控制台基域和空白屏幕。另外,通知应该列在下面,/notifications不是吗?

Lua*_*inh 7

我已经遇到这个问题一周了。但事情已经解决了。请遵循以下步骤:

  1. 确保您的APNs 证书APNs 身份验证密钥已上传到Firebase 控制台的云消息传递设置中
  2. 确保在发送包含 apns ( messaging.APNSConfig ) 的firebase.messaging.Message时使用正确的FCM 令牌
  3. 检查您的AppDelegate.m文件是否按照Firebase 文档设置。就我而言,我忘记了 add [FIRMessaging messaging].APNSToken = deviceToken;in function application:didRegisterForRemoteNotificationsWithDeviceToken:。请记住,即使您收到了一条消息(它不包含通知),当您在服务器中发送消息时,响应也不会说明有关向您的 iOS 设备推送通知的任何信息。而且我也不知道如何检查通知是否已送达。

我的Python服务器代码:

def push_notification():
    title = "Your title"
    message = "Your message"
    ntf_data = {"key": "value"}
    fcm_token = "your_fcm_token"
    topic = "your_topic"

    # apns
    alert = ApsAlert(title = title, body = message)
    aps = messaging.Aps(alert = alert, sound = "default")
    payload = messaging.APNSPayload(aps)

    # message
    msg = messaging.Message(
        notification = messaging.Notification(
            title = title,
            body = message
        ),
        data = ntf_data,
        token = fcm_token,
        topic = topic,
        apns = messaging.APNSConfig(payload = payload)
    )

    # send
    res = messaging.send(msg)
Run Code Online (Sandbox Code Playgroud)

和前端react-native通知监听器代码:

    onNotificationListener = firebase.notifications().onNotification((notification) => {
         console.log("received notification:", notification)
    }
Run Code Online (Sandbox Code Playgroud)

如果我的回答有任何问题或者您是否需要更多信息,请随时询问。快乐编码。


Hir*_*aka 1

返回值是一个消息 ID 字符串,目前它不指向任何内容(即不是有效的 URL)。它只是 FCM 分配给您的通知的唯一 ID,它表示通知已成功移交给 FCM 进行传递。另外,我相信从 SDK 发送的通知不会出现在 Firebase 控制台中。您需要一个实际的客户端(Android、IOS 或 Web)来端到端测试此流程。