如何创建服务器,使用 Python 通过 GCM 向 Android 设备发送推送通知

介绍

推送通知允许您的Android应用程序通知用户的事件,即使用户不使用您的应用程序.本教程的目的是发送一个简单的推送通知到您的应用程序. 我们将使用 Ubuntu 14.04 和 ** Python 2.7** 在服务器上,和 ** Google Cloud Messaging** 作为推送通知服务。

我们将使用 server 来指与 DigitalOcean 相连的实例,我们将使用 GCM 来指 Google 的服务器,即 Android 设备与您的服务器之间的服务器。

前提条件

您需要这些东西在开始教程之前:

  • 一個 Android 應用程式;請參閱 developer.android.com
  • A Ubuntu 14.04 Droplet
  • 您的 Droplet 的 IP 地址

关于推送通知

Google 提供的 GCM 连接服务器从第三方应用程序服务器(例如您的 Droplet)接收消息,并将这些消息发送到在设备上运行的 GCM 支持的 Android 应用程序( client app)。

The GCM Connection Servers send data between your third-party server and the client apps.

换句话说,您需要自己的服务器与谷歌服务器进行通信,以便发送通知. 您的服务器将消息发送到 GCM (Google Cloud Messaging) 连接服务器,然后连接服务器排队并存储消息,然后在设备上连接时发送到 Android 设备。

步骤一:创建 Google API 项目

我们需要创建一个 Google API 项目,以便为我们的应用程序启用 GCM。

请访问 Google 开发者控制台

如果您从未在那里创建过开发人员帐户,您可能需要填写一些细节。

点击创建项目

输入项目名称,然后单击创建

New Google API project

等待几秒钟才能创建新项目,然后在项目页面左上方查看您的 项目ID 和 ** 项目号码** 。

Project ID and number

记住项目号码,您将在您的 Android 应用程序客户端中使用它。

步骤二:为您的项目启用 GCM

请确保您的项目仍在 Google 开发者控制台中选择。

在左侧的侧面栏中,选择 ** API 和 auth** 。

选择API

在显示的 API 列表中,将 Google Cloud Messaging for Android 转换为 ON

Google Cloud Messaging for Android 现在应该在该项目的启用API列表中。

Google Cloud Messaging for Android enabled

在左侧的侧面栏中,选择 ** API 和 auth** 。

选择身份证

公共 API 访问下方,单击创建新密钥

选择服务器密钥

输入您的服务器的IP地址。

Server key IP

点击创建

复制 API KEY . 您将需要在您的服务器上稍后输入。

API KEY

步骤三:链接Android应用程序

为了测试通知,我们需要将我们的 Android 应用链接到我们创建的 Google API 项目。

如果您是 Android 应用开发的新人,您可能需要遵循 实施 GCM 客户端的官方指南。

您可以从 gcm 页面获取官方源代码。

请注意,这些源并非更新,因此您需要修改 Gradle 文件:

「gcm 客户端/Gcm 客户端/build.gradle」

旧线:

1compile "com.google.android.gms:play-services:4.0.+"

更新线路:

1compile "com.google.android.gms:play-services:5.0.89+"

在主要活动中,定位此行:

1String SENDER_ID = "YOUR_PROJECT_NUMBER_HERE";

取代您的 Google API 项目的 ** 项目号码。

每次设备注册到 GCM 时,都会收到一个注册 ID. 我们需要这个注册 ID 来测试服务器. 为了方便,只需在主文件中修改这些行:

1if (regid.isEmpty()) {
2                registerInBackground();
3            }else{
4                Log.e("==========================","=========================");
5                Log.e("regid",regid);
6                Log.e("==========================","=========================");
7            }

运行应用后,请查看日志卡,并复制您的 regid ,以便您稍后拥有它。

1=======================================
210-04 17:21:07.102 7550-7550/com.pushnotificationsapp.app E/==========================﹕ APA91bHDRCRNIGHpOfxivgwQt6ZFK3isuW4aTUOFwMI9qJ6MGDpC3MlOWHtEoe8k6PAKo0H_g2gXhETDO1dDKKxgP5LGulZQxTeNZSwva7tsIL3pvfNksgl0wu1xGbHyQxp2CexeZDKEzvugwyB5hywqvT1-UJY0KNqpL4EUXTWOm0RxccxpMk
310-04 17:21:07.102 7550-7550/com.pushnotificationsapp.app E/==========================﹕ =======================================

第四步 - 部署一滴水

部署一个新的 Ubuntu 14.04 服务器,我们需要这个是我们的第三方应用服务器。

谷歌的GCM连接服务器从第三方应用程序服务器(我们的Droplet)接收消息并将其发送到Android设备上的应用程序中,而谷歌为HTTP和CCS(XMPP)提供连接服务器,我们为本教程专注于HTTP。

我们的服务器的功能:

  • 与您的客户端
  • 将正确格式化的请求发送到 GCM 服务器
  • 将请求处理并按需要重新发送,使用指数式退出
  • 存储 API 密钥和客户端注册 ID。

客户端将通过发送设备的注册 ID 与您的服务器进行通信,以便您存储它并在发送通知时使用它. 现在不要担心管理它;它非常简单,GCM通过在注册 ID 无效的情况下向您发送错误消息为您提供帮助。

步骤五:设置Python GCM简单服务器

與你同在,與你同在,與你同在。

更新您的包列表:

1sudo apt-get update

安装 Python 软件包:

1sudo apt-get install python-pip python-dev build-essential

安裝「python-gcm」 了解更多關於 python-gcm 這裡的資訊。

1sudo pip install python-gcm

创建一个新的Python文件在服务器上的某个地方。

1sudo nano ~/test_push.py

将下列信息添加到文件中. 替换红色标记的变量。

1from gcm import *
2
3gcm = GCM("AIzaSyDejSxmynqJzzBdyrCS-IqMhp0BxiGWL1M")
4data = {'the_message': 'You have x new friends', 'param2': 'value2'}
5
6reg_id = 'APA91bHDRCRNIGHpOfxivgwQt6ZFK3isuW4aTUOFwMI9qJ6MGDpC3MlOWHtEoe8k6PAKo0H_g2gXhETDO1dDKKxgP5LGulZQxTeNZSwva7tsIL3pvfNksgl0wu1xGbHyQxp2CexeZDKEzvugwyB5hywqvT1-UxxxqpL4EUXTWOm0RXE5CrpMk'
7
8gcm.plaintext_request(registration_id=reg_id, data=data)

** 解释:**

  • 从 gcm 导入 *:这将导入 Google Cloud Messaging for Android
  • gcm 的 Python 客户端:从 Google API 项目中添加您的 API KEY ;确保您的服务器的 IP 地址处于允许的 IPs
  • reg_id:从您的 Android 应用程序 中添加您的 regid

步骤六:发送推送通知

运行此命令,将测试通知发送到您的应用程序:

1sudo python ~/test_push.py

等待大约10秒,您应该在您的Android设备上收到通知。

Push notification example

麻烦的。

如果通知在大约 10 秒后显示在您的设备上,请执行以下步骤:

  • 您的智能手机/平板电脑是否连接到互联网?
  • 您是否有正确的项目密钥?
  • 您是否有正确的应用程序?
  • 您的服务器的 IP 地址是否添加到 Google API 服务器密钥?
  • 服务器是否连接到互联网?

如果你仍然没有收到通知,它可能是应用程序. 检查 logcat 是否存在一些错误。

从这里到哪里去

一旦你完成了这个简单的测试,你可能想要发送通知给你的所有用户. 记住,你必须将其发送到1000组. 此外,如果CGM响应了无效的ID,你必须从你的数据库中删除它。

您可以调整本教程中的示例以使用自己的Android应用程序。

Published At
Categories with 技术
comments powered by Disqus