我正在尝试使用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
下,不是吗?
我遇到这个问题已经一个星期了。但问题解决了。遵循以下内容:
- 确保您的APNs证书或APNs身份验证密钥已上传到Firebase控制台的云消息设置中
- 发送firebase.messageing.Message时,请确保使用正确的FCM令牌,该令牌包括apns(messageing.APNSConfig(
- 检查您的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)
和前端反应本机通知侦听器代码:
onNotificationListener = firebase.notifications().onNotification((notification) => {
console.log("received notification:", notification)
}
请随意询问我的回答中是否有任何问题,或者您是否需要更多信息。快乐的编码。
返回值是一个消息ID字符串,目前它不指向任何内容(即不是有效的URL(。这只是FCM为您的通知分配的唯一ID,它表示通知已成功移交给FCM进行交付。此外,我相信从SDK发送的通知不会出现在Firebase控制台中。您需要一个实际的客户端(Android、IOS或web(来端到端测试此流。