Python Firebase Admin SDK似乎成功,但我从未收到通知

时间:2018-12-13 22:38:01

标签: 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))

这将返回格式为/project/<project name>/messages/<message ID>的URL,但该URL对我不起作用。它将仅将我重定向到Firebase控制台基本域和黑屏。另外,通知应该在/notifications下列出吗?

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

我有一个问题了一个星期。但这已解决。请遵循以下步骤:

  1. 确保您的 APNs证书 APNs身份验证密钥已上传到Firebase Console
  2. 的Cloud Messaging设置中
  3. 在发送包含APN( messaging.APNSConfig )的 firebase.messaging.Message 时,请确保使用正确的 FCM令牌。 / li>
  4. 检查您的 AppDelegate.m 文件是否在Firebase Docs之后设置。就我而言,我忘记在函数[FIRMessaging messaging].APNSToken = deviceToken;中添加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)

以及前端反应本地通知侦听器代码:

    onNotificationListener = firebase.notifications().onNotification((notification) => {
         console.log("received notification:", notification)
    }

随时询问我的答案是否有任何问题,或者您需要更多信息。编码愉快。