【问题标题】:How to issue a push notification with GCM and Google App Engine如何使用 GCM 和 Google App Engine 发出推送通知
【发布时间】:2015-07-13 03:02:22
【问题描述】:

我正试图弄清楚如何使用 Google Cloud Messaging 向我的 Android 应用发出推送通知。

我在 Google Cloud SQL 上有一个 MySQL 数据库,并带有一个 Cloud Endpoints API,用于与该 MySQL 数据库进行交互(插入、更新等)。

现在,我想在我的 MySQL 数据库中创建一个名为“messages”的表,每当有新消息插入其中时,我希望通过 GCM 通知我的 Android 应用程序。

我知道我需要一个 BroadcastReceiver 来监听传入的推送通知,但我不确定我应该在哪里执行代码以使用 GCM 发送推送通知(在我的 Cloud Endpoints 中?)我也不知道GCM 如何知道我的消息表已更新为新行。

有人可以帮助我理解这个中间步骤,或者为我指出一些教程的正确方向吗?

【问题讨论】:

    标签: android google-app-engine google-cloud-messaging


    【解决方案1】:

    如果您正在寻找快速解决此问题的方法,它不会发生,因为这是一个不平凡的问题。根据所使用的框架,初始信号本身很容易。例如,在 django 中,我使用信号,以便在将模型保存到 DB 时,保存后的信号可以发送 GCM 消息。

    【讨论】:

      【解决方案2】:

      最好的办法是在将消息记录写入数据库时​​将任务添加到推送队列。该任务在运行时可以找到该消息所需的所有收件人,并将 GCM 消息发送给每个收件人。

      这允许您对限制消息进行评级并从请求中卸载一些工作。


      为清楚起见进行编辑:

      1. 云端点处理程序在事务中写入您的数据库
      2. 云端点处理程序将任务放在任务队列(推送队列)中 同一笔交易
      3. 云端点返回
      4. 推送队列任务在另一个处理程序上异步执行
      5. 任务处理程序找到消息接收者(数据库查询或类似的)
      6. 任务处理程序使用来自 DB 的有效负载向每个接收者发送 GCM 消息

      这样做的好处是:

      • 消息保存和任务创建是事务性的,如果失败,您可以重试或将错误发送回客户端
      • 云端点调用不需要等待 GCM RPC 完成(即更快)
      • 如果 GCM 任务处理因任何原因失败,它将根据推送队列规则重试
      • 您可以使用队列配置独立控制 GCM 消息传递的速率
      • 您可以将 GCM 消息传递和相关处理卸载到不同的模块或后端,并为您的 REST 前端提供不同的消费配置文件。

      【讨论】:

      • 所以我会让我的 Cloud Endpoints 方法写入数据库,然后向消息所针对的任何设备发送推送通知?
      猜你喜欢
      • 2016-01-01
      • 1970-01-01
      • 2015-01-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-27
      • 1970-01-01
      • 2018-07-23
      相关资源
      最近更新 更多