介绍
推送通知允许您的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)。
换句话说,您需要自己的服务器与谷歌服务器进行通信,以便发送通知. 您的服务器将消息发送到 GCM (Google Cloud Messaging) 连接服务器,然后连接服务器排队并存储消息,然后在设备上连接时发送到 Android 设备。
步骤一:创建 Google API 项目
我们需要创建一个 Google API 项目,以便为我们的应用程序启用 GCM。
请访问 Google 开发者控制台。
如果您从未在那里创建过开发人员帐户,您可能需要填写一些细节。
点击创建项目
。
输入项目名称,然后单击创建
。
等待几秒钟才能创建新项目,然后在项目页面左上方查看您的 项目ID 和 ** 项目号码** 。
记住项目号码,您将在您的 Android 应用程序客户端中使用它。
步骤二:为您的项目启用 GCM
请确保您的项目仍在 Google 开发者控制台中选择。
在左侧的侧面栏中,选择 ** API 和 auth** 。
选择API
。
在显示的 API 列表中,将 Google Cloud Messaging for Android 转换为 ON 。
Google Cloud Messaging for Android 现在应该在该项目的启用API列表中。
在左侧的侧面栏中,选择 ** API 和 auth** 。
选择身份证
。
在公共 API 访问
下方,单击创建新密钥
。
选择服务器密钥
。
输入您的服务器的IP地址。
点击创建
。
复制 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 Androidgcm
的 Python 客户端:从 Google API 项目中添加您的 API KEY ;确保您的服务器的 IP 地址处于允许的 IPsreg_id
:从您的 Android 应用程序 中添加您的 regid
步骤六:发送推送通知
运行此命令,将测试通知发送到您的应用程序:
1sudo python ~/test_push.py
等待大约10秒,您应该在您的Android设备上收到通知。
麻烦的。
如果通知在大约 10 秒后显示在您的设备上,请执行以下步骤:
- 您的智能手机/平板电脑是否连接到互联网?
- 您是否有正确的项目密钥?
- 您是否有正确的应用程序?
- 您的服务器的 IP 地址是否添加到 Google API 服务器密钥?
- 服务器是否连接到互联网?
如果你仍然没有收到通知,它可能是应用程序. 检查 logcat 是否存在一些错误。
从这里到哪里去
一旦你完成了这个简单的测试,你可能想要发送通知给你的所有用户. 记住,你必须将其发送到1000组. 此外,如果CGM响应了无效的ID
,你必须从你的数据库中删除它。
您可以调整本教程中的示例以使用自己的Android应用程序。