【发布时间】:2017-11-14 11:51:07
【问题描述】:
这是我第一次在 stackoverflow 上发布问题,所以我会尽力以清晰的方式扩展我的问题。我一直在努力寻找答案,但目前陷入困境,因此非常感谢您提供的任何见解。
我正在尝试向我开发的 Android 应用发送 FCM 消息。我遵循了 Android 快速入门教程:https://firebase.google.com/docs/cloud-messaging/android/client
我能够从 Firebase 云消息传递编写器向我的应用发送通知消息,并且应用正确接受通知,当应用可见时,在简单的 Activity -> TextView 中加载数据负载。
现在,我正在尝试使用基于 Webapp2 框架的 Python SDK 从 Google App Engine 服务器应用推送通知,但我不清楚如何去做。
在 RequestHandler 中,我想将从 POST 请求接收到的数据推送到通知。我已经编写了一些基本代码来尝试这样做:
class SendDetails(webapp2.RequestHandler):
def post(self):
url = 'https://fcm.googleapis.com/fcm/send'
body = {
"data": {
"title": "mytitle",
"body": "mybody",
"url": "myurl"
},
"notification": {
"title": "My web app name",
"body": "message",
"content_available": "true"
},
"to": "AIzaSyAqv4hjGC1Z5.......XyQ",
}
headers = {"Content-Type": "application/json",
"Authorization": "AIzaSyDhIji4X6h0VQwor.......lrr2zo"}
try:
form_data = urllib.urlencode(body)
headers = {"Content-Type": "application/json",
"Authorization": "key=AIzaSyDhI.......mOUXlrr2zo"}
result = urlfetch.fetch(
url='https://fcm.googleapis.com/fcm/send',
payload=form_data,
method=urlfetch.POST,
headers=headers)
self.response.headers['Content-Type'] = 'text/plain'
self.response.write(result)
except urlfetch.Error:
logging.exception('Caught exception fetching url')
当我在 dev_appserver 上运行代码并通过浏览器触发 RequestHandler 时,我收到“POST HTTP/1.1 200 68”响应。我不确定如何解释“68”代码。
根据我如何格式化请求,有时我会被重定向到 https://firebase.google.com/docs/cloud-messaging/http-server-ref 的“Firebase 云消息传递 HTTP 协议”网页告诉我,我走在正确的轨道上。
接下来,为了获得一些见解,我尝试从名为 Advanced REST Client (ARC) 的 Chrome 应用程序发送通知,该应用程序允许我构建 HTTP 请求并转发到 FCM 服务器。
这是我发送到 FCM 服务器的示例:
内容类型:应用程序/json 授权:key=AIzaSyDhIji4X6h0........2zo
{"to": "AIzaSyAqv4hjGC1Z5........cfSRU_gXyQ", “数据”: { "message": "这是一条 Firebase 云消息传递主题消息!", }}
我收到以下回复:
{
"multicast_id":
7345322951926226000
,
"success": 0,
"failure": 1,
"canonical_ids": 0,
"results": [
{
"error": "InvalidRegistration"
}
],
}
我确信我遗漏了一些简单的东西,但作为 AppEngine 和 Firebase 的新手,我不确定我哪里出错了。
【问题讨论】:
标签: android python google-app-engine firebase firebase-cloud-messaging