Triển khai GCM với Android

Bạn có một ứng dụng, bạn muốn gửi thông báo cho tất cả client mà không muốn mất phí.
Điều đó hoàn toàn có thể thực hiện được nếu bạn sử dụng dịch vụ Google Cloud Messaging (GCM) do Google cung cấp.
GCM là dịch vụ giúp bạn tương tác giữa client - server thông qua máy chủ GCM.
Trong bài viết này, mình sẽ giới thiệu, hướng dẫn các bạn các bước cơ bản để xây dựng ứng dụng Android sử dụng GCM (bao gồm cả client lẫn server).

1. Mô hình, cách vận hành của GCM

Sơ đồ vận hành của GCM

Quá trình hoạt động như sau:

  1. Client gửi senderID, application id tới GCM server để đăng kí.
  2. Nếu các thông số hợp lệ, GCM server sẽ trả về registration id cho client.
  3. Sau khi nhận được registration idGCM server trả về, client sẽ gửi registration id này lên server (do ta tự xây dựng).
  4. Server nhận registration id và lưu nó vào CSDL (phục vụ cho việc quản lý, gửi thông báo sau này).
  5. Mỗi khi muốn thông báo tới client, server sẽ gửi yêu cầu tới GCM server với danh sách các registration id.
  6. GCM server sẽ thông báo tin nhắn tới các client (dựa vào registration id mà server cung cấp).

Đăng kí với Google Cloud Messaging

Để có được senderID, application id hãy làm như sau:

  1. Truy cập tới: https://developers.google.com/mobile/ để tạo nhanh project.
  2. Tại đây, bạn cần nhập App namepackage name vào khung tương ứng. Sau đó chọn tiếp tục. Đăng kí API cho ứng dụng

  3. Ở bước này, bạn sẽ bật các API dùng cho ứng dụng của mình (ở đây chỉ demo GCM nên mình chỉ bật Cloud Messaging) bằng cách nhấn vào Enable Cloud Messaging. Kết quả thu được: Đăng kí API cho ứng dụng Bạn có thể thấy 2 giá trị mà mình cần sử dụng: Server API Key (đươc sử dụng khi server gửi yêu cầu tới GCM server), Sender ID (dùng cho client).
  4. Nhấn Generate configuration files để tạo file google-service.json, đây là file config được sử dụng tại client. Cuối cùng là tải file google-service.json, và di chuyển vào thư mục /app/ trong project của bạn.

Bạn có thể tham khảo tài liệu hướng dẫn chính thức của Google tại đây

2. Triển khai ứng dụng.

Trong bài viết này, mình sẽ hướng dẫn xây dựng server side trước, phía client sẽ có trong bài viết tiếp theo.

2.1 Xây dựng Server side

Trong tutorial này, mình sẽ sử dụng PHP để xây dựng server cũng như MySQL làm cơ sở dữ liệu.

Xây dựng CSDL

  1. Mở phpmyadmin để tạo database với tên là gcm.
  2. Vào database gcm và truy vấn câu query dưới để tạo bảng gcm_users

Xây dựng server

  1. Tạo file config.php để lưu thông tin về database và google api key.
  2. Một file khác db_connect.php để tiến hành kết nối với CSDL (bao gồm việc open và close).
  3. File db_functions.php chứa các phương thức thao tác với CSDL như thêm mới (storeUser), lấy toàn bộ danh sách user (getAllUsers). Bạn có thể xem nội dung chi tiết tại đây;
  4. File GCM.php dùng để gửi yêu cầu thông báo tới GCM server.
  5. Tạo file register.php để nhận truy vấn từ client, và lưu trữ thông tin vào trong CSDL. Các tham số client cần phải gửi name, email, registration id.
  6. Tạo file send_message.php để gửi thông báo tới client thông qua GCM server.
  7. Cuối cùng là tạo file index.php có nhiệ̣m vụ̣ hiể̉n thị̣ danh sách các client đã đăng kí , và cho phép gửi tin nhắn tới từng thiết bị̣. Do code khá dài nên mình sẽ dẫn link để các bạn tham khảo. index.php

Như vậy là đã xây dựng xong server side, giao diện quản lý sẽ tương tự như sau Giao diện quản lý

Lưu ý: Chỉ xây dựng client side khi bạn đã xây dựng server side thành công.
Trong bài viết tiếp theo, mình sẽ hướng dẫn cách xây dựng phía client.
Toàn bộ code phần server bạn có thể tham khảo tại đây