透過 GCM 實作跨裝置資料同步

24
Rogery Android Team Leader 透過 GCM 實作跨裝置資料同步 @Android Taipei

description

2013.07.25 @Android Taipei

Transcript of 透過 GCM 實作跨裝置資料同步

Page 1: 透過 GCM 實作跨裝置資料同步

Rogery!Android Team Leader!

透過 GCM 實作跨裝置資料同步@Android Taipei

Page 2: 透過 GCM 實作跨裝置資料同步

•  關於 Rogery  &  KKBOX  Android  Team  

•  Concept  &  Idea  

•  Implement  

•  Demo  

•  Q  &  A  

Agenda

Page 3: 透過 GCM 實作跨裝置資料同步

•  從 Android  1.0  開始研發 KKBOX  Android,  開發經驗至今已四年以上  

 •  在 KKBOX  擔任 Android  Team  Leader    •  熱愛音樂創作的工程師 http://youtu.be/IwsNKobAkS0  

關於 Rogery

Page 4: 透過 GCM 實作跨裝置資料同步

•  產品:KKBOX  Android,  KKBOX  Music  Store,  UtaPass  

•  裝置:Handset,  Tablet,  STB 和車機  

•  團隊人數從 1 人到 11 人  

關於 KKBOX Android Team

Page 5: 透過 GCM 實作跨裝置資料同步

Concept & Idea

Page 6: 透過 GCM 實作跨裝置資料同步

GCM (Google Cloud Message)

•  幫助開發者發送推播訊息到各個 Android 裝置  

•  首次在 Google  IO  2012 亮相  

•  前身是 C2DM  (Cloud  to  Device  Messaging)  

Page 7: 透過 GCM 實作跨裝置資料同步

KKBOX use GCM

•  Push  NoPficaPon: 推播跟隨的臺長已經上線訊息  

•  只用在訊息通知  

Page 8: 透過 GCM 實作跨裝置資料同步

Concept & Idea

直到我看見…

Page 9: 透過 GCM 實作跨裝置資料同步

Google IO 2013 – StopWatch Demo

Page 10: 透過 GCM 實作跨裝置資料同步

Concept & Idea

怎麼能那麼即時同步?

Page 11: 透過 GCM 實作跨裝置資料同步

Concept & Idea

Think: KKBOX 能用在哪裡?

Page 12: 透過 GCM 實作跨裝置資料同步

Concept & Idea

歌單立即同步?!

Page 13: 透過 GCM 實作跨裝置資料同步

Polling vs Pushing

•  Polling: 每個裝置定期去向 Server 問目前最新的狀態  

•  目前 KKBOX 實作歌單同步的方式  

•  容易實作  

•  耗電:手機一直送連線、Server 一直收連線  

Page 14: 透過 GCM 實作跨裝置資料同步

Polling vs Pushing

•  Pushing: 當 Server 有狀態更新時去通知裝置    •  省電:連線數降低、Server  Loading 降低  

Page 15: 透過 GCM 實作跨裝置資料同步

Implement

Page 16: 透過 GCM 實作跨裝置資料同步

POC

KKGCMSyncServer (Google App Engine)

KKGCMSyncClient

Page 17: 透過 GCM 實作跨裝置資料同步

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 實作跨裝置資料同步

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 實作跨裝置資料同步

Demo 1 POC: GCMSyncList

Page 20: 透過 GCM 實作跨裝置資料同步

Demo 2 KKBOX GCM Sync

Page 21: 透過 GCM 實作跨裝置資料同步

Demo Source

•  KKGCMSyncServer – GitHub - https://github.com/rogery/KKGCMSyncServer

•  KKGCMSyncClient – GtiHub - https://github.com/rogery/KKGCMSyncClient  

Page 22: 透過 GCM 實作跨裝置資料同步

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 實作跨裝置資料同步
Page 24: 透過 GCM 實作跨裝置資料同步

Thank  You  

[email protected]

Rogery Yang

楊哲豪(Rogery)