Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 19 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
19
Dung lượng
387,33 KB
Nội dung
1 ĐẠI HỌC QUỐC GIA TP. HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN KHOA KHOA HỌC MÁY TÍNH __________ TIỂU LUẬN MÔN HỌC: ĐIỆN TOÁN ĐÁM MÂY PUSH NOTIFICATION SYSTEM Giảng viên hướng dẫn : PGS-TS NGUYỄN PHI KHỨ Học viên thực hiện: NGUYỄN THỊ DIỄM AN 1 GVHD: PGS-TS Nguyễn Phi Khứ SVTH: Nguyễn Thị Diễm An CH1301075 2 TP. HồChí Minh, tháng 6 năm 2014 LỜI MỞ ĐẦU Hiện nay xu hướng công nghệ đang chuyển dần từ PC sang điện thoại di động, các ứng dụng ngày càng phát triển nhiều trên smartphone và từ đó cũng có nhiều hệ điều hành support như android, ios, windowphone. Các nhà cung cấp hệ điều hành này hỗ trợ tính năng đẩy tin nhắn về thiết bị thông qua device token của mỗi máy. Thông thường mỗi ứng dụng (giả sử trong cùng một công ty) muốn đẩy thông báo về máy thì thường làm tính năng riêng biệt đó trong mỗi ứng dụng, điều này sẽ làm lặp đi lặp lại các các chức năng đó. “Push notification system” đáp ứng được việc cung cấp dịch vụ đẩy thông báo về các ứng dụng. Hiện tại push notification system chỉ mới nghiên cứu đến mức độ là sơ đồ hệ thống, thiết kế cơ cơ sở dữ liệu và các kỹ thuật liên quan để xây dựng hệ thống này vì em muốn phát triển nó làm đề tài luận văn sau này. 2 GVHD: PGS-TS Nguyễn Phi Khứ SVTH: Nguyễn Thị Diễm An CH1301075 3 LỜI CẢM ƠN 3 GVHD: PGS-TS Nguyễn Phi Khứ SVTH: Nguyễn Thị Diễm An CH1301075 Lời đầu tiên em muốn bày tỏ sự cảm ơn sâu sắc của mình tới PGS.TS. Nguyễn Phi Khứ giảng viên bộ môn Điện Toán Đám Mây, trường Đại học Công Nghệ Thông Tin, ĐHQG – Tp.HCM đã hướng dẫn chúng em cũng như chia sẽ những kinh nghiệm của thầy. Trong thời gian học, em đã tiếp thu nhiều kiến thức bổ ích để hoàn thành bài tiểu luận này. Em rất mong nhận được sự đóng góp ý kiến của thầy và các bạn để đề tài có thể hoàn thiện hơn. Em xin chân thành cảm ơn! Tp Hồ Chí Minh, tháng 06 năm 2014 Học viên: Nguyễn Thị Diễm An 4 NHẬN XÉT (Của giảng viên) …………………………………………………………………………… ……………………………………………………………………………… ……………………………………………………………………………… ……………………………………………………………………………… ……………………………………………………………………………… ……………………………………………………………………………… ……………………………………………………………………………… ……………………………………………………………………………… ……………………………………………………………………………… ……………………………………………………………………………… ……………………………………………………………………………… ……………………………………………… Giảng viên (Họ tên và chữ kí) 4 GVHD: PGS-TS Nguyễn Phi Khứ SVTH: Nguyễn Thị Diễm An CH1301075 5 MỤC LỤC CHƯƠNG 1: TỔNG QUAN VỀ CHƯƠNG TRÌNH 1.1 Lý do chọn đề tài Công nghệ thông tin ngày càng phát triển, và ứng dụng ngày nay chủ yếu xây dựng trên nền điện thoại di động, xu hướng điện thoại thay cho PC ngày càng mạnh mẽ. Nhu cầu quảng cáo các ứng dụng của mình ngày càng đòi hỏi, mạng xã hội cũng phát triển mạnh do nhu cầu kết nối người dùng. Để người dùng có thể thấy ngay được tin nhắn khi ứng dụng đang tắt hoặc để các nhà phát triển muốn đẩy một thông tin nào xuống máy, hoặc quảng cáo các ứng dụng khác, thì hệ điều hành ios và android có cung cấp thư viện đẩy thông báo, tuy nhiên số lượng kết nối tới apple và google là có giới hạn. Như vậy làm sao để có thể đẩy lượng thông báo là lớn nhất và hiệu quả nhất nằm trong giới hạn của google và apple cho phép. Và “push 5 GVHD: PGS-TS Nguyễn Phi Khứ SVTH: Nguyễn Thị Diễm An CH1301075 6 notification system” có thể đáp ứng được nhu cầu đó. 1.2 Ý tưởng Từ lý do trên mà em đi xây dựng push notification system với chức năng là có thể push quảng cáo hoặc push cập nhật ứng dụng (từ addmin)… hoặc push giữa các người dùng từ yêu cầu của server app (server của một ứng dụng nào đó). 1.3 Mục tiêu đề tài Mục tiêu đề tài là cung cấp một cloud chuyên về push notification cho một công ty hoặc rộng hơn là cung cấp cho nhiều công ty mà muốn sử dụng dịch vụ này. 6 GVHD: PGS-TS Nguyễn Phi Khứ SVTH: Nguyễn Thị Diễm An CH1301075 7 CHƯƠNG 2: CƠ SỞ LÝ THUYẾT 2.1 Push notification trên ios Khi ứng dụng bị tắt hoặc không hoạt động mà lúc đó người dùng lại có tin nhắn mới hoặc cái thông báo mới gì đó thì làm sao ứng dung có thể biết được. May mắn thay, apple cung cấp chức năng push notification. Phần phía máy chủ của ứng dụng có thể làm chức năng này đó là kết nối với apple cloud để đầy thông báo về người dùng. Nhưng khi xây dựng hệ thông push notification thì thay vì máy chủ của ứng dụng kết nối với apple cloud thì nó kết nối với hệ thống của mình, và từ hệ thống này mình push thông báo về ứng dụng thông qua apple cloud. Các thành phần có thể gửi qua thông báo bao gồm: Một tin nhắn văn bản ngắn, âm thanh báo, thiết lập một số dữ liệu kèm theo. - Quá trình đẩy thông báo của apple như sau: 7 GVHD: PGS-TS Nguyễn Phi Khứ SVTH: Nguyễn Thị Diễm An CH1301075 8 - Giải thích quy trình trên: Ứng dụng muốn nhận được thông báo thì phải đăng ký với ios. Hệ điều hành xin APNS server một device token, và device token này được gửi về cho ứng dụng. Các ứng dụng sẽ gửi cái device token mà nó nhận được ở trên lên server app của nó. Khi có một số điều gì đó xảy ra liên quan đến ứng dụng thì server app sẽ gửi một thông báo tới dịch vụ thông báo push của App (APN). APN sẽ gửi thông báo đến thiệt bị của người dùng. - Những điều cần thiết cho việc đẩy thông báo: Cần một chiếc iphone, hoặc ipad Có một AppId 8 GVHD: PGS-TS Nguyễn Phi Khứ SVTH: Nguyễn Thị Diễm An CH1301075 9 Máy phải được kết nối internet - Nội dung của một thông báo: Máy chủ có trách nhiệm tạo ra các thông báo. Một thông báo bao gồm device token, một payload, và một số bit, byte khác. Máy chủ nên tạo một payload dạng Json. Một payload đơn giản như sau: { "APS": { "alert": "Xin chào!", "sound": "default" } } Kích thước của payload không được vượt quá 256 byte 2.2 Push notification tren android GCM (Google Cloud Messaging) là một dịch vụ cho phép gửi dữ liệu từ máy chủ của đển thiết bị hỗ trợ Android của người dùng, và cũng để nhận tin nhắn từ các thiết bị trên cùng một kết nối. Dịch vụ GCM xử lý mọi khía cạnh của hàng đợi tin nhắn và gửi tin nhắn đến các mục tiêu ứng dụng Android chạy trên thiết bị mục tiêu. GCM là một dịch vụ miễn phí,. Giới hạn dữ liệu lên đến 4KB (dữ liễu khá lớn so với. - Đặc điểm chính của GCM: Nó cho phép các máy chủ ứng dụng của bên thứ ba (server app chằng hạn) để gửi tin nhắn đến các ứng dụng Android của bên thứ ba đó. Bằng cách kết nối và sử dụng máy chủ GCM, ứng dụng có thể nhận tin nhắn. Một ứng dụng Android trên một thiết bị Android không cần phải chạy để nhận tin nhắn. Hệ thống sẽ đánh thức những ứng dụng Android thông qua phát sóng khi 9 GVHD: PGS-TS Nguyễn Phi Khứ SVTH: Nguyễn Thị Diễm An CH1301075 10 tin nhắn đến, miễn là ứng dụng được thiết lập và có kết nối internet. GCM chỉ đơn giản là đi thông điệp dữ liệu thô nhận thẳng vào ứng dụng Android, trong đó ứng dụng có toàn quyền kiểm soát như thế nào để xử lý nó. Ví dụ, các ứng dụng có thể gửi một thông báo, hiển thị một giao diện tùy chỉnh, hoặc dữ liệu âm thầm đồng bộ. Nó đòi hỏi các thiết bị chạy Android 2.2 hoặc cao hơn hoặc một trình giả lập chạy Android 2.2 với các API của Google. - Kiến trúc GCM: Google cung cấp máy chủ kết nối GCM có tin nhắn từ một máy chủ ứng dụng của bên thứ ba và gửi các tin nhắn đến một ứng dụng Android. Hiện tại, Google cung cấp cho các máy chủ kết nối cho HTTP và XMPP . Các máy chủ của hãng thứ ba là một thành phần thực hiện để làm việc với máy chủ kết nối GCM. Máy chủ ứng dụng gửi tin nhắn đến một máy chủ kết nối GCM, các enqueues máy chủ kết nối và lưu trữ các tin nhắn, và sau đó gửi nó đến thiết bị khi thiết bị đang trực tuyến. Để nhận tin nhắn GCM, ứng dụng này phải đăng ký với GCM và có được một ID đăng ký. Nếu đang sử dụng XMPP (CCS) máy chủ kết nối, ứng dụng client có 10 GVHD: PGS-TS Nguyễn Phi Khứ SVTH: Nguyễn Thị Diễm An CH1301075 [...]... triển khai như mô hình sau đây: 13 GVHD: PGS-TS Nguyễn Phi Khứ SVTH: Nguyễn Thị Diễm An CH1301075 14 Giải thích vể mô hình push notification: - Push theo yêu cầu từ web admin • Client gửi thông tin về thiết bị như device token (để push) , sex, age, level (những thông tin làm tiêu chí push) … sau khi gửi lên server qua API mà server cung cấp, 14 GVHD: PGS-TS Nguyễn Phi Khứ SVTH: Nguyễn Thị Diễm An CH1301075... và apple cloud • Sau khi gửi lên apple cloud và google cloud, nó sẽ push tin nhắn về device Và có report liên quan, nếu thất bại thì dữ liệu sẽ đưa và queue out và save vào DB dể report bao nhiêu thành công, bao nhiêu thất bại - Push theo yêu cầu từ server app • Khi server app gửi tin nhắn cần push, thì nó phải có đầy đủ thông tin push key app, android hay ios, device token, nội dung… khi đó thông... KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 4.1 Kế luận Hệ thống này em muốn phát triển lên thành luận văn nên em chỉ mới xây dựng được mô hình hệ thống, thiết kế được cơ sở dữ liệu dạng mysql Tìm hiểu các kỹ thuật liên quan để xây dựng hệ thống như spring framework, rabbitmq, javaPns, GCM, hibernate framework, các woker… Em mong muốn được sự góp ý của thầy về hệ thống này để có thể đáp ứng được tiêu chuẩn của một luận. .. về hệ thống này để có thể đáp ứng được tiêu chuẩn của một luận văn thực sự 4.2 Hướng phát triển Push notification system hiện đang con dở dang, còn phải hoàn thiện hết danh sách yêu cầu đặt ra như: - Xây dựng api để cung cấp cho client, và api cung cấp cho server app Xây dựng trang admin để quản lý vấn để push Xây dựng “lookup api queue to DB” để lưu thông tin về client Xây dựng “lookup queue out to... cầu như vào thời điểm A, push cho những người chơi game B theo các tiêu chí như độ tuổi, gioi tính, level … với nội dung C nào đó Lúc này có một con “schedule job” làm nhiệm vụ là thăm dò DB xem yêu cầu của admin đã tới giờ chưa, nếu tới giờ rồi nó sẽ lấy những thông tin liên quan để push thông báo xuống client Thông tin cần thiết như là key app, device token, nội dung, tiêu chí push khi nó lấy thông... update_on Date Bảng DeviceReport Tên cột Kiểu dữ liệu id Long create_on Date total Long fail Long pushSchedule Long (id của bảng pushSchedule) Bảng DeviceReportDetail Tên cột Kiểu dữ liệu id Long create_on Date description String deviceReport Long (id của bảng deviceReport) device Long (id của bảng device) Bảng PushSchedule 17 GVHD: PGS-TS Nguyễn Phi Khứ SVTH: Nguyễn Thị Diễm An CH1301075 18 Tên cột Kiểu... api để cung cấp cho client, và api cung cấp cho server app Xây dựng trang admin để quản lý vấn để push Xây dựng “lookup api queue to DB” để lưu thông tin về client Xây dựng “lookup queue out to DB” để lưu report từ google cloud và apple cloud Xây dựng schedule job để thăm dò từ DB xem đã tới thời gian push chưa Xây dựng các hang đợi “Api queue in”, “google queue in”, “apple queue in”, “queue out” 3.2... được nhận tin nhắn ít nhất là 1 và nhiều nhất là 1000 collapse_key: chuỗi tùy ý để phân nhóm các tin nhắn dạng bị ẩn, và chỉ có tin nhắn cuối cùng được gửi đến client, việc này tránh gửi quá nhiều khi điện thoại hoạt động trở lại data: sử dụng dạng đối tượng json Ví dụ: "data":{"score":"3x1"} delay_while_idle: nếu có, chỉ ra rằng tin nhắn sẽ không được gửi ngay nếu thiết bị bị idle, máy chủ sẽ đợi cho... chuỗi các sự kiện xảy ra khi máy chủ ứng dụng gửi một thông điệp: Các máy chủ ứng dụng gửi một thông điệp đến các máy chủ GCM Đưa vào hang đợi và lưu trữ các tin nhắn trong trường hợp thiết bị đang ẩn Khi điện thoại được trực tuyến, Google sẽ gửi tin nhắn tới các thiết bị Trên thiết bị, hệ thống chương trình phát sóng tin nhắn tới các ứng dụng Android với các điều khoản thích hợp, để chỉ những ứng dụng... Xây dựng “lookup api queue to DB” để lưu thông tin về client Xây dựng “lookup queue out to DB” để lưu report từ google cloud và apple cloud Xây dựng schedule job để thăm dò từ DB xem đã tới thời gian push chưa Xây dựng các hang đợi “Api queue in”, “google queue in”, “apple queue in”, “queue out” 19 GVHD: PGS-TS Nguyễn Phi Khứ SVTH: Nguyễn Thị Diễm An CH1301075 . MINH TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN KHOA KHOA HỌC MÁY TÍNH __________ TIỂU LUẬN MÔN HỌC: ĐIỆN TOÁN ĐÁM MÂY PUSH NOTIFICATION SYSTEM Giảng viên hướng dẫn : PGS-TS NGUYỄN PHI KHỨ Học viên thực hiện:. lặp đi lặp lại các các chức năng đó. Push notification system đáp ứng được việc cung cấp dịch vụ đẩy thông báo về các ứng dụng. Hiện tại push notification system chỉ mới nghiên cứu đến mức độ. Và push 5 GVHD: PGS-TS Nguyễn Phi Khứ SVTH: Nguyễn Thị Diễm An CH1301075 6 notification system có thể đáp ứng được nhu cầu đó. 1.2 Ý tưởng Từ lý do trên mà em đi xây dựng push notification system