【问题标题】:Python Firebase Admin SDK appears successful but I never receive the notificationPython Firebase Admin SDK 显示成功,但我从未收到通知
【发布时间】:2019-05-15 05:08:15
【问题描述】:

我正在尝试使用 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 下,不是吗?

【问题讨论】:

    标签: python ios firebase firebase-cloud-messaging firebase-admin


    【解决方案1】:

    这个问题我已经有一个星期了。但它已经解决了。遵循这些:

    1. 确保您的 APNs 证书APNs 身份验证密钥 已上传到 Firebase Console 的云消息传递设置中
    2. 确保在发送包含 apns (messaging.APNSConfig) 的 firebase.messaging.Message 时使用正确的 FCM 令牌
    3. 检查您的 AppDelegate.m 文件是否按照Firebase Docs 设置。就我而言,我忘记在函数application:didRegisterForRemoteNotificationsWithDeviceToken: 中添加[FIRMessaging messaging].APNSToken = deviceToken;。请记住,即使您收到了一条消息(它不包含通知),您在服务器中发送消息时的响应也没有说明向您的 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)
    

    以及前端 react-native 通知监听代码:

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 谢谢,这让我对不同的措辞感觉更好,但我确实有一个我正在测试的 iOS 应用程序,它没有收到通知,所以在此之前它在某个地方迷路了。
      猜你喜欢
      • 2017-09-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多