Cách tạo server để gửi thông báo đẩy bằng GCM tới thiết bị Android bằng Python
Thông báo đẩy cho phép ứng dụng Android của bạn thông báo cho user về một sự kiện, ngay cả khi user không sử dụng ứng dụng của bạn. Mục tiêu của hướng dẫn này là gửi một thông báo đẩy đơn giản đến ứng dụng của bạn. Ta sẽ sử dụng Ubuntu 14.04 và Python 2.7 trên server và Google Cloud Messaging làm dịch vụ thông báo đẩy.Ta sẽ sử dụng thuật ngữ server để đề cập đến version được tạo ra với DigitalOcean. Ta sẽ sử dụng GCM để chỉ server của Google, server nằm giữa thiết bị Android và server của bạn.
Yêu cầu
Bạn cần những thứ này trước khi bắt đầu hướng dẫn:
- Một ứng dụng Android ; xem developer.android.com
- Một server Ubuntu 14.04
- Địa chỉ IP của Server
Giới thiệu về Thông báo đẩy
Server kết nối GCM do Google cung cấp lấy tin nhắn từ server ứng dụng của bên thứ ba, chẳng hạn như Server và gửi những tin nhắn này đến ứng dụng Android hỗ trợ GCM ( ứng dụng client ) đang chạy trên thiết bị. Hiện tại, Google cung cấp các server kết nối cho HTTP và XMPP.
Nói cách khác, bạn cần server của riêng mình giao tiếp với server của Google để gửi thông báo. Server của bạn sẽ gửi tin nhắn đến Server kết nối GCM (Google Cloud Messaging), sau đó server kết nối xếp hàng và lưu trữ tin nhắn, sau đó gửi đến thiết bị Android khi thiết bị trực tuyến.
Bước một - Tạo Dự án API Google
Ta cần tạo một dự án API của Google để kích hoạt GCM cho ứng dụng của bạn .
Truy cập Control panel dành cho nhà phát triển của Google .
Nếu bạn chưa bao giờ tạo account nhà phát triển ở đó, bạn có thể cần điền vào một vài chi tiết.
Nhấp vào Tạo dự án .
Nhập tên dự án, sau đó nhấp vào Tạo .
Chờ một vài giây để dự án mới được tạo. Sau đó, xem ID dự án và Số dự án của bạn ở phía trên bên trái của trang dự án.
Ghi lại Số dự án . Bạn sẽ sử dụng nó trong ứng dụng ứng dụng Android của bạn .
Bước hai - Bật GCM cho dự án của bạn
Đảm bảo rằng dự án của bạn vẫn được chọn trong Control panel dành cho nhà phát triển của Google .
Trong thanh bên ở bên trái, chọn API và xác thực .
Chọn các API .
Trong danh sách API được hiển thị, hãy chuyển lựa chọn Nhắn tin qua cloud của Google dành cho Android thành BẬT . Chấp nhận các điều khoản dịch vụ.
Google Cloud Messaging cho Android hiện sẽ nằm trong danh sách các API được bật cho dự án này.
Trong thanh bên ở bên trái, chọn API và xác thực .
Chọn Thông tin đăng nhập .
Trong Quyền truy cập API công khai , hãy nhấp vào Tạo khóa mới .
Chọn Khóa server .
Nhập địa chỉ IP của server của bạn.
Nhấp vào Tạo .
Sao chép KEY API . Bạn cần nhập thông tin này trên server của bạn sau đó.
Bước 3 - Liên kết ứng dụng Android
Để kiểm tra các thông báo, ta cần liên kết ứng dụng Android của bạn với dự án API Google mà ta đã thực hiện.
Nếu bạn chưa quen với việc phát triển ứng dụng Android, bạn có thể làm theo hướng dẫn chính thức về Triển khai ứng dụng GCM .
Bạn có thể lấy mã nguồn chính thức từ trang gcm .
Lưu ý các nguồn không phải là bản cập nhật, vì vậy bạn sẽ phải sửa đổi file Gradle:
gcm-client/GcmClient/build.gradle
Dòng cũ:
compile "com.google.android.gms:play-services:4.0.+"
Dòng cập nhật:
compile "com.google.android.gms:play-services:5.0.89+"
Trong hoạt động chính, hãy tìm dòng này:
String SENDER_ID = "YOUR_PROJECT_NUMBER_HERE";
Thay thế số này bằng Số dự án từ dự án API Google của bạn.
Mỗi khi thiết bị đăng ký GCM, thiết bị đó sẽ nhận được ID đăng ký. Ta cần ID đăng ký này để kiểm tra server . Để dễ dàng nhận được nó, chỉ cần sửa đổi các dòng sau trong file chính:
if (regid.isEmpty()) { registerInBackground(); }else{ Log.e("==========================","========================="); Log.e("regid",regid); Log.e("==========================","========================="); }
Sau khi bạn chạy ứng dụng, hãy xem logcat và sao chép regid của bạn để bạn có nó sau này. Nó sẽ trông giống thế này:
======================================= 10-04 17:21:07.102 7550-7550/com.pushnotificationsapp.app E/==========================﹕ APA91bHDRCRNIGHpOfxivgwQt6ZFK3isuW4aTUOFwMI9qJ6MGDpC3MlOWHtEoe8k6PAKo0H_g2gXhETDO1dDKKxgP5LGulZQxTeNZSwva7tsIL3pvfNksgl0wu1xGbHyQxp2CexeZDKEzvugwyB5hywqvT1-UJY0KNqpL4EUXTWOm0RxccxpMk 10-04 17:21:07.102 7550-7550/com.pushnotificationsapp.app E/==========================﹕ =======================================
Bước 4 - Triển khai Server
Triển khai một server Ubuntu 14.04 mới . Ta cần đây là server ứng dụng bên thứ ba của ta .
Server kết nối GCM của Google lấy tin nhắn từ server ứng dụng của bên thứ ba (Server của ta ) và gửi chúng đến các ứng dụng trên thiết bị Android. Mặc dù Google cung cấp Server kết nối cho HTTP và CCS (XMPP), ta đang tập trung vào HTTP cho hướng dẫn này. Server HTTP chỉ hạ lưu: cloud đến thiết bị. Điều này nghĩa là bạn chỉ có thể gửi tin nhắn từ server đến các thiết bị.
Role của server của ta :
- Giao tiếp với khách hàng của bạn
- Kích hoạt các yêu cầu được định dạng đúng tới server GCM
- Xử lý các yêu cầu và gửi lại nếu cần, sử dụng tính năng dự phòng theo cấp số nhân
- Lưu trữ khóa API và ID đăng ký ứng dụng client . Khóa API có trong tiêu đề của các yêu cầu POST gửi tin nhắn
- Tạo ID tin nhắn để nhận dạng duy nhất từng tin nhắn mà nó gửi đi. ID tin nhắn phải là duy nhất cho mỗi ID người gửi
Máy khách sẽ giao tiếp với server của bạn bằng cách gửi ID đăng ký của thiết bị để bạn lưu trữ và sử dụng nó khi bạn gửi thông báo. Đừng lo lắng về việc quản lý nó; nó rất đơn giản và GCM cung cấp cho bạn sự trợ giúp bằng cách cung cấp cho bạn thông báo lỗi trong trường hợp ID đăng ký không hợp lệ.
Bước 5 - Cài đặt server đơn giản Python GCM
Đăng nhập vào server của bạn bằng user sudo .
Cập nhật danh sách gói của bạn:
sudo apt-get update
Cài đặt các gói Python:
sudo apt-get install python-pip python-dev build-essential
Cài đặt python-gcm
. Tìm hiểu thêm về python-gcm tại đây .
sudo pip install python-gcm
Tạo một file Python mới ở đâu đó trên server . Hãy cùng nói nào:
sudo nano ~/test_push.py
Thêm thông tin sau vào file . Thay thế các biến được đánh dấu màu đỏ . Lời giải thích ở bên dưới.
from gcm import * gcm = GCM("AIzaSyDejSxmynqJzzBdyrCS-IqMhp0BxiGWL1M") data = {'the_message': 'You have x new friends', 'param2': 'value2'} reg_id = 'APA91bHDRCRNIGHpOfxivgwQt6ZFK3isuW4aTUOFwMI9qJ6MGDpC3MlOWHtEoe8k6PAKo0H_g2gXhETDO1dDKKxgP5LGulZQxTeNZSwva7tsIL3pvfNksgl0wu1xGbHyQxp2CexeZDKEzvugwyB5hywqvT1-UxxxqpL4EUXTWOm0RXE5CrpMk' gcm.plaintext_request(registration_id=reg_id, data=data)
Giải trình:
-
from gcm import *
: thao tác này nhập ứng dụng Python cho Google Cloud Messaging cho Android -
gcm
: thêm API KEY của bạn từ dự án API Google; đảm bảo địa chỉ IP của server của bạn nằm trong các IP được phép -
reg_id
: thêm regid của bạn từ ứng dụng Android của bạn
Bước 6 - Gửi thông báo đẩy
Chạy lệnh này để gửi thông báo thử nghiệm đến ứng dụng của bạn:
sudo python ~/test_push.py
Chờ khoảng 10 giây. Bạn sẽ nhận được thông báo trên thiết bị Android của bạn .
Xử lý sự cố.
Nếu thông báo không xuất hiện trên thiết bị của bạn sau khoảng 10 giây, hãy làm theo các bước sau:
- Điện thoại thông minh / máy tính bảng của bạn có được kết nối với internet không?
- Bạn có key dự án chính xác không?
- Bạn có regid chính xác từ ứng dụng không?
- Địa chỉ IP của server của bạn có được thêm vào khóa server API Google không?
- Server có kết nối với internet không?
Nếu bạn vẫn không nhận được thông báo, có thể đó là ứng dụng. Kiểm tra logcat để tìm một số lỗi.
Đi đâu từ đây
Sau khi thực hiện xong bài kiểm tra đơn giản này, bạn có thể cần gửi thông báo cho tất cả user của bạn . Lưu ý bạn phải gửi chúng theo bộ 1000. Ngoài ra, nếu CGM phản hồi với "ID không hợp lệ", bạn phải xóa nó khỏi database của bạn .
Bạn có thể điều chỉnh các ví dụ trong hướng dẫn này để hoạt động với ứng dụng Android của bạn .
Các tin liên quan
Cách cài đặt và cấu hình server Mumble (Murmur) trên Ubuntu 14.042014-11-11
Cách chạy server trò chuyện UnrealIRCd trên Debian 7
2014-10-22
Cách cấu hình xác thực dựa trên khóa SSH trên server Linux
2014-10-20
Cách bảo vệ server của bạn trước lỗ hổng POODLE SSLv3
2014-10-15
Cách sử dụng cấu hình cloud để thiết lập server ban đầu của bạn
2014-10-13
Cách bảo vệ server của bạn trước lỗ hổng bảo mật do Shellshock Bash
2014-09-25
Cách cài đặt server Percona mới hoặc thay thế MySQL
2014-09-18
Cách cài đặt puppet để quản lý cơ sở hạ tầng server của bạn
2014-08-15
Cách cấu hình BIND làm server DNS Mạng riêng trên Ubuntu 14.04
2014-08-12
Cách cấu hình BIND làm server DNS Mạng riêng trên Ubuntu 14.04
2014-08-12