透過 gcm 實作跨裝置資料同步
DESCRIPTION
2013.07.25 @Android TaipeiTRANSCRIPT
![Page 1: 透過 GCM 實作跨裝置資料同步](https://reader033.vdocuments.net/reader033/viewer/2022042501/547b1e23b4af9fd3158b4ddd/html5/thumbnails/1.jpg)
Rogery!Android Team Leader!
透過 GCM 實作跨裝置資料同步@Android Taipei
![Page 2: 透過 GCM 實作跨裝置資料同步](https://reader033.vdocuments.net/reader033/viewer/2022042501/547b1e23b4af9fd3158b4ddd/html5/thumbnails/2.jpg)
• 關於 Rogery & KKBOX Android Team
• Concept & Idea
• Implement
• Demo
• Q & A
Agenda
![Page 3: 透過 GCM 實作跨裝置資料同步](https://reader033.vdocuments.net/reader033/viewer/2022042501/547b1e23b4af9fd3158b4ddd/html5/thumbnails/3.jpg)
• 從 Android 1.0 開始研發 KKBOX Android, 開發經驗至今已四年以上
• 在 KKBOX 擔任 Android Team Leader • 熱愛音樂創作的工程師 http://youtu.be/IwsNKobAkS0
關於 Rogery
![Page 4: 透過 GCM 實作跨裝置資料同步](https://reader033.vdocuments.net/reader033/viewer/2022042501/547b1e23b4af9fd3158b4ddd/html5/thumbnails/4.jpg)
• 產品:KKBOX Android, KKBOX Music Store, UtaPass
• 裝置:Handset, Tablet, STB 和車機
• 團隊人數從 1 人到 11 人
關於 KKBOX Android Team
![Page 5: 透過 GCM 實作跨裝置資料同步](https://reader033.vdocuments.net/reader033/viewer/2022042501/547b1e23b4af9fd3158b4ddd/html5/thumbnails/5.jpg)
Concept & Idea
![Page 6: 透過 GCM 實作跨裝置資料同步](https://reader033.vdocuments.net/reader033/viewer/2022042501/547b1e23b4af9fd3158b4ddd/html5/thumbnails/6.jpg)
GCM (Google Cloud Message)
• 幫助開發者發送推播訊息到各個 Android 裝置
• 首次在 Google IO 2012 亮相
• 前身是 C2DM (Cloud to Device Messaging)
![Page 7: 透過 GCM 實作跨裝置資料同步](https://reader033.vdocuments.net/reader033/viewer/2022042501/547b1e23b4af9fd3158b4ddd/html5/thumbnails/7.jpg)
KKBOX use GCM
• Push NoPficaPon: 推播跟隨的臺長已經上線訊息
• 只用在訊息通知
![Page 8: 透過 GCM 實作跨裝置資料同步](https://reader033.vdocuments.net/reader033/viewer/2022042501/547b1e23b4af9fd3158b4ddd/html5/thumbnails/8.jpg)
Concept & Idea
直到我看見…
![Page 9: 透過 GCM 實作跨裝置資料同步](https://reader033.vdocuments.net/reader033/viewer/2022042501/547b1e23b4af9fd3158b4ddd/html5/thumbnails/9.jpg)
Google IO 2013 – StopWatch Demo
![Page 10: 透過 GCM 實作跨裝置資料同步](https://reader033.vdocuments.net/reader033/viewer/2022042501/547b1e23b4af9fd3158b4ddd/html5/thumbnails/10.jpg)
Concept & Idea
怎麼能那麼即時同步?
![Page 11: 透過 GCM 實作跨裝置資料同步](https://reader033.vdocuments.net/reader033/viewer/2022042501/547b1e23b4af9fd3158b4ddd/html5/thumbnails/11.jpg)
Concept & Idea
Think: KKBOX 能用在哪裡?
![Page 12: 透過 GCM 實作跨裝置資料同步](https://reader033.vdocuments.net/reader033/viewer/2022042501/547b1e23b4af9fd3158b4ddd/html5/thumbnails/12.jpg)
Concept & Idea
歌單立即同步?!
![Page 13: 透過 GCM 實作跨裝置資料同步](https://reader033.vdocuments.net/reader033/viewer/2022042501/547b1e23b4af9fd3158b4ddd/html5/thumbnails/13.jpg)
Polling vs Pushing
• Polling: 每個裝置定期去向 Server 問目前最新的狀態
• 目前 KKBOX 實作歌單同步的方式
• 容易實作
• 耗電:手機一直送連線、Server 一直收連線
![Page 14: 透過 GCM 實作跨裝置資料同步](https://reader033.vdocuments.net/reader033/viewer/2022042501/547b1e23b4af9fd3158b4ddd/html5/thumbnails/14.jpg)
Polling vs Pushing
• Pushing: 當 Server 有狀態更新時去通知裝置 • 省電:連線數降低、Server Loading 降低
![Page 15: 透過 GCM 實作跨裝置資料同步](https://reader033.vdocuments.net/reader033/viewer/2022042501/547b1e23b4af9fd3158b4ddd/html5/thumbnails/15.jpg)
Implement
![Page 16: 透過 GCM 實作跨裝置資料同步](https://reader033.vdocuments.net/reader033/viewer/2022042501/547b1e23b4af9fd3158b4ddd/html5/thumbnails/16.jpg)
POC
KKGCMSyncServer (Google App Engine)
KKGCMSyncClient
![Page 17: 透過 GCM 實作跨裝置資料同步](https://reader033.vdocuments.net/reader033/viewer/2022042501/547b1e23b4af9fd3158b4ddd/html5/thumbnails/17.jpg)
Registration
(1)
(2)
(3)
1. register GCM -‐ ref.1 2. return GCM registraPon ID - ref.1 ref.2 3. put registracPon ID to server -‐ ref.3
![Page 18: 透過 GCM 實作跨裝置資料同步](https://reader033.vdocuments.net/reader033/viewer/2022042501/547b1e23b4af9fd3158b4ddd/html5/thumbnails/18.jpg)
Push & Sync
(2)
(3)
(1)
1. push change to server -‐ ref.1 ref.2 2. send sync message to GCM -‐ ref.3 3. client receive sync message from GCM -‐ ref.4 4. pull change from server -‐ ref.5 5. return change to client -‐ ref.6
(4)
(5)
![Page 19: 透過 GCM 實作跨裝置資料同步](https://reader033.vdocuments.net/reader033/viewer/2022042501/547b1e23b4af9fd3158b4ddd/html5/thumbnails/19.jpg)
Demo 1 POC: GCMSyncList
![Page 20: 透過 GCM 實作跨裝置資料同步](https://reader033.vdocuments.net/reader033/viewer/2022042501/547b1e23b4af9fd3158b4ddd/html5/thumbnails/20.jpg)
Demo 2 KKBOX GCM Sync
![Page 21: 透過 GCM 實作跨裝置資料同步](https://reader033.vdocuments.net/reader033/viewer/2022042501/547b1e23b4af9fd3158b4ddd/html5/thumbnails/21.jpg)
Demo Source
• KKGCMSyncServer – GitHub - https://github.com/rogery/KKGCMSyncServer
• KKGCMSyncClient – GtiHub - https://github.com/rogery/KKGCMSyncClient
![Page 22: 透過 GCM 實作跨裝置資料同步](https://reader033.vdocuments.net/reader033/viewer/2022042501/547b1e23b4af9fd3158b4ddd/html5/thumbnails/22.jpg)
References
• C2DM - https://developers.google.com/android/c2dm/
• GeYng Started with GCM – Android Developer
-‐ http://developer.android.com/google/gcm/gs.html • Google Cloud Messaging for Android – Google I/O 2012
-‐ https://developers.google.com/events/io/2012/sessions/gooio2012/100/ • StopWatch Demo – Google I/O 2013
-‐ http://bradabrams.com/2013/06/google-io-2013-demo-android-studio-cloud-endpoints-synchronized-stopwatch-demo/
![Page 23: 透過 GCM 實作跨裝置資料同步](https://reader033.vdocuments.net/reader033/viewer/2022042501/547b1e23b4af9fd3158b4ddd/html5/thumbnails/23.jpg)