【问题标题】:Trouble Sending iOS push notifications from Google App Engine从 Google App Engine 发送 iOS 推送通知时遇到问题
【发布时间】:2014-01-29 00:43:30
【问题描述】:

我正在开发我的第一个使用推送通知的 iOS 应用。我有一个 python 脚本,可以让我从我的机器发送推送通知,但我无法使用 Google App Engine Launcher 来实现它。

当我在 GAE 上运行它时,我什么也得不到 - 没有错误,也没有推送通知。我究竟做错了什么?我知道发送实际通知的代码工作正常,但我无法在 Google 的服务器上复制它。

这是我尝试使用 GAE Launcher 运行的脚本:

import os
import cgi
import webapp2

from google.appengine.ext.webapp.util import run_wsgi_app

import ssl
import json
import socket
import struct
import binascii

TOKEN = 'my_app_token'
PAYLOAD = {'aps': {'alert':'Push!','sound':'default'}}

class APNStest(webapp2.RequestHandler):

    def send_push(token, payload):
        # Your certificate file
        cert = 'ck.pem'

        # APNS development server
        apns_address = ('gateway.sandbox.push.apple.com', 2195)

        # Use a socket to connect to APNS over SSL
        s = socket.socket()
        sock = ssl.wrap_socket(s, ssl_version=ssl.PROTOCOL_SSLv3, certfile=cert)
        sock.connect(apns_address)

        # Generate a notification packet
        token = binascii.unhexlify(token)
        fmt = '!cH32sH{0:d}s'.format(len(payload))
        cmd = '\x00'
        message = struct.pack(fmt, cmd, len(token), token, len(payload), payload)
        sock.write(message)
        sock.close()

    send_push(TOKEN, json.dumps(PAYLOAD))

application = webapp2.WSGIApplication([
                                       ('/apns', APNStest)
                                       ], debug=True)

def main():
run_wsgi_app(application)

if __name__ == "__main__":
main()

【问题讨论】:

  • 您有任何错误吗?也许您的ck.pem 文件不在正确的文件夹中。
  • @Eran - 我没有收到任何导致调试困难的错误。我很确定我的 .pem 文件在正确的位置,因为相同的脚本在本地运行时可以工作。
  • 对不起,如果这是 noob:ish,但你不应该在 APNStest 中有一个 get-method 吗?我不是那么喜欢 Python,但我猜代码只执行一次,当类被加载或类似的东西时。也许很快就会在“生产模式”中调用 GAE 套接字的东西......? :-)

标签: python ios google-app-engine apple-push-notifications


【解决方案1】:

所以解决方案正如我预期的那样非常简单。我已经在 cloud.google.com 上为该项目启用了计费功能,但还需要在 appengine.google.com 上启用计费功能。愚蠢的错误让我倒退了 2 天。

【讨论】:

  • 是的,您需要在多个地方启用计费,但在我的情况下,它现在仍然无法正常工作我有这个错误:` com.google.cloud.backend.pushnotification.PushFeedbackProcessingServlet doGet:正在检索非活动设备列表因 CommunicationException 失败:javapns.communication.exceptions.CommunicationException:与反馈服务通信时出现问题 `
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-01-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多