[英]Trying to send notifications via Firebase using Cloud-Messaging API in my Android App
[英]How to send Notifications to Android App with Firebase Cloud Messaging with AppEngine Python
这是我第一次向stackoverflow发帖提问,所以我会尽力以明确的方式扩展我的问题。 我试图找到一个答案时,我的头撞在了墙上,但我目前陷入困境,所以提供的任何见解都会非常感激。
我正在尝试将FCM消息发送到我开发的Android应用程序。 我按照Android快速入门教程进行了操作: https : //firebase.google.com/docs/cloud-messaging/android/client
我可以从Firebase Cloud Messenging编辑器向我的应用程序发送通知消息,并且应用程序正确接受通知,当应用程序可见时,将数据有效负载加载到一个简单的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服务器的示例:
内容类型:application / json授权:key = AIzaSyDhIji4X6h0 ........ 2zo
{“to”:“AIzaSyAqv4hjGC1Z5 ........ cfSRU_gXyQ”,“data”:{“message”:“这是Firebase云消息传递主题消息!”,}}
我收到以下回复:
{
"multicast_id":
7345322951926226000
,
"success": 0,
"failure": 1,
"canonical_ids": 0,
"results": [
{
"error": "InvalidRegistration"
}
],
}
我确信我错过了一些简单的东西,但作为AppEngine和Firebase的新手,我不确定我哪里出错了。
好吧,经过进一步的调查,答案是(像往常一样)在我的鼻子底下,但不是那么明显。
对于我的测试,我使用的是Firebase / Google分配的旧服务器密钥而不是他们推荐的新密钥 - 即使它在Firebase控制台/ Messenger部分中明确说明它仍然可用。 一旦我插入新密钥,一切都按预期工作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.