14
Mobil Informatikai Rendszerek FCM – Firebase Cloud Messaging GCM, C2DM, Push notification 2018. április 18. [email protected] Sicz-Mesziár János [email protected] Mezei József

Mobil Informatikai rendszerekusers.nik.uni-obuda.hu/malk/mobil/2018 tavasz/06_-_FCM_GCM_C2D… · Firebase II. Sicz-MesziárJános –Mezei József 4/18/2018 3 Email SMS Értesítések

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Mobil Informatikai rendszerekusers.nik.uni-obuda.hu/malk/mobil/2018 tavasz/06_-_FCM_GCM_C2D… · Firebase II. Sicz-MesziárJános –Mezei József 4/18/2018 3 Email SMS Értesítések

Mobil Informatikai RendszerekFCM – Firebase Cloud Messaging

GCM, C2DM, Push notification

2018. április 18.

[email protected]

Sicz-Mesziár Já[email protected]

Mezei József

Page 2: Mobil Informatikai rendszerekusers.nik.uni-obuda.hu/malk/mobil/2018 tavasz/06_-_FCM_GCM_C2D… · Firebase II. Sicz-MesziárJános –Mezei József 4/18/2018 3 Email SMS Értesítések

Firebase I.

BaaS (Backend as a Service)

4/18/2018Sicz-Mesziár János – Mezei József 2

Web alkalmazások és statikus tartalmak közzététele

NoSQL, valósidejű sync

Offline is elérhető marad

Mobil/Szerver/Web (NoSQL)

Flexibilis, skálázható

Offline support

Felhasználói tartalom tárolás (képek/videók/hang

állományok)

Esemény vezérelt szerver kód futtatás

Teljesítmény monitorozás

Gmail/Facebook/Twitter/Github/Email/SMS

Alkalmazás követés

Page 3: Mobil Informatikai rendszerekusers.nik.uni-obuda.hu/malk/mobil/2018 tavasz/06_-_FCM_GCM_C2D… · Firebase II. Sicz-MesziárJános –Mezei József 4/18/2018 3 Email SMS Értesítések

Firebase II.

4/18/2018Sicz-Mesziár János – Mezei József 3

Email

SMS

Értesítések

Felhasználóink nymonkövetése, mit fognak tenni

kedvezmények ajánlása

Jövőbeli lehetőségek reklámozása

Gépi tanulással előrevetíti felhasználóink cselekedetét

Mobilon alkalmazás, weben honlap tartalom

Alkalmazás működésének és kinézetének

változtatása új verzió publikálása nélkül

Alkalmazáson belüli és webes reklámok

megjelenítse

Google Analitika (hány alkalommal nézik meg a

tartalmat a felhasználók, megtalálják e a gombot…)

Kereső optimalizálás

Page 4: Mobil Informatikai rendszerekusers.nik.uni-obuda.hu/malk/mobil/2018 tavasz/06_-_FCM_GCM_C2D… · Firebase II. Sicz-MesziárJános –Mezei József 4/18/2018 3 Email SMS Értesítések

Push notification

A Push notification lehetővé teszi, hogy szerver oldalról

küldjünk üzenetet a kliens alkalmazásnak.

Jellemzői:

A kliensek folyamatosan low-level (TCP/IP) alapon

kapcsolódnak a kiszolgáló szerver parkhoz.

Minimális üzenet méret kiküldésére alkalmasak.

256Kb - 4K

Delay és TTL támogatás, disconnect kezelés

Egyedileg vagy akár több kliens is megcímezhető.

Tetszőleges tartalom.

Mobil platformonként más-más kiszolgáló szerver park áll

rendelkezésre.

Sávszél és energia hatékony megoldás

4/18/2018Sicz-Mesziár János – Mezei József 4

Page 5: Mobil Informatikai rendszerekusers.nik.uni-obuda.hu/malk/mobil/2018 tavasz/06_-_FCM_GCM_C2D… · Firebase II. Sicz-MesziárJános –Mezei József 4/18/2018 3 Email SMS Értesítések

Push notification – data flow

4/18/2018Sicz-Mesziár János – Mezei József 5

Page 6: Mobil Informatikai rendszerekusers.nik.uni-obuda.hu/malk/mobil/2018 tavasz/06_-_FCM_GCM_C2D… · Firebase II. Sicz-MesziárJános –Mezei József 4/18/2018 3 Email SMS Értesítések

Push notification - szolgáltatások

4/18/2018Sicz-Mesziár János – Mezei József 6

Apple:

APNS: Apple Push Notification Service

Google:

C2DM: Cloud to Device Message:Régebben, mára deprecated lett, a GCM váltotta

GCM: Google Cloud Messaging4K message, 2 irányú XMPP protokol, FCM váltja

FCM: Firebase Cloud Messaging

Microsoft:

WNS: Windows Push Notification Services

+ Web Push API:https://developer.mozilla.org/en/docs/Web/API/Push_API

Page 7: Mobil Informatikai rendszerekusers.nik.uni-obuda.hu/malk/mobil/2018 tavasz/06_-_FCM_GCM_C2D… · Firebase II. Sicz-MesziárJános –Mezei József 4/18/2018 3 Email SMS Értesítések

FCM – Firebase Cloud Messaging

Cross-platform üzenet küldési szolgáltatás

Célja, hogy egy egységes rendszer fogja össze a különböző aszinkron üzenet értesítési megoldásokat.

Alábbiak támogatottak:

Android: lényegében a GCM-re épül

iOS: APNS feletti megoldás

Web

C++

Unity

Bővebben: https://firebase.google.com/docs/cloud-messaging/

4/18/2018Sicz-Mesziár János – Mezei József 7

Page 8: Mobil Informatikai rendszerekusers.nik.uni-obuda.hu/malk/mobil/2018 tavasz/06_-_FCM_GCM_C2D… · Firebase II. Sicz-MesziárJános –Mezei József 4/18/2018 3 Email SMS Értesítések

FCM üzenet küldése

4/18/2018Sicz-Mesziár János – Mezei József 8

HTTP Post üzenet küldése Firebase szerverére

https://fcm.googleapis.com/fcm/send

Kérés felépítése:

Content-Type:application/json

Authorization:key=AIzaSyZ-1u...0GBYzPu7Udno5aA

{

"collapse_key": "score_update",

"time_to_live": 108,

"data": {

"score": "5x1",

"time": "15:10"

},

"to" : ["bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1..."]

}

Page 9: Mobil Informatikai rendszerekusers.nik.uni-obuda.hu/malk/mobil/2018 tavasz/06_-_FCM_GCM_C2D… · Firebase II. Sicz-MesziárJános –Mezei József 4/18/2018 3 Email SMS Értesítések

FCM üzenet küldése (2)

4/18/2018Sicz-Mesziár János – Mezei József 9

Firebase szerver válasza

{

"multicast_id": 216,

"success": 3,

"failure": 3,

"canonical_ids": 1,

"results": [

{ "message_id": "1:0408" },

{ "error": "Unavailable" },

{ "error": "InvalidRegistration" },

{ "message_id": "1:1516" },

{ "message_id": "1:2342", "registration_id": "32" },

{ "error": "NotRegistered"}

]

}

Page 10: Mobil Informatikai rendszerekusers.nik.uni-obuda.hu/malk/mobil/2018 tavasz/06_-_FCM_GCM_C2D… · Firebase II. Sicz-MesziárJános –Mezei József 4/18/2018 3 Email SMS Értesítések

FCM üzenet fogadása - Android

Minimum Android 2.3

Firebase project készítése

Új projekt létrehozása a Firebase console-on

https://firebase.google.com/console/

Alkalmazás package név és SHA-1 lenyomat megadása

keytool -list -v -keystore"C:\Users\[user_name]\.android\debug.keystore"

-alias androiddebugkey-storepass android-keypass android

Config (JSON) fájl hozzáadása az Android alkalmazáshoz

/project/app

4/18/2018Sicz-Mesziár János – Mezei József 10

Page 11: Mobil Informatikai rendszerekusers.nik.uni-obuda.hu/malk/mobil/2018 tavasz/06_-_FCM_GCM_C2D… · Firebase II. Sicz-MesziárJános –Mezei József 4/18/2018 3 Email SMS Értesítések

FCM üzenet fogadása – Android (2)

Gradle-ben új függőség

dependencies {

compile 'com.google.firebase:firebase-messaging:9.8.0'

}

AndroidManifest.xml-ben két service regisztrálása

<service

android:name=".MyFirebaseMessagingService">

<intent-filter>

<action android:name="com.google.firebase.MESSAGING_EVENT"/>

</intent-filter>

</service>

<service

android:name=".MyFirebaseInstanceIDService">

<intent-filter>

<action android:name="com.google.firebase.INSTANCE_ID_EVENT"/>

</intent-filter>

</service>

4/18/2018Sicz-Mesziár János – Mezei József 11

Page 12: Mobil Informatikai rendszerekusers.nik.uni-obuda.hu/malk/mobil/2018 tavasz/06_-_FCM_GCM_C2D… · Firebase II. Sicz-MesziárJános –Mezei József 4/18/2018 3 Email SMS Értesítések

FCM üzenet fogadása – Android (3)

MyFirebaseInstanceIDService.kt

class MyFirebaseInstanceIDService : FirebaseInstanceIdService() {

override fun onTokenRefresh() {super.onTokenRefresh()

// Get updated InstanceID token.val refreshedToken = FirebaseInstanceId.getInstance().tokensendRegistrationToServer(refreshedToken)

}

private fun sendRegistrationToServer(token: String?) {// TODO: Implement this method to send token to your app server.

}

}

A token megváltozhat, ha:

Felhasználó eltávolítja / újratelepíti az alkalmazást

Felhasználó törli az alkalmazás adatokat

Alkalmazás helyreállításra kerül egy új készüléken (új install)

Az alkalmazás törli az Instance ID-t

4/18/2018Sicz-Mesziár János – Mezei József 12

Page 13: Mobil Informatikai rendszerekusers.nik.uni-obuda.hu/malk/mobil/2018 tavasz/06_-_FCM_GCM_C2D… · Firebase II. Sicz-MesziárJános –Mezei József 4/18/2018 3 Email SMS Értesítések

FCM üzenet fogadása – Android (4)

MyFirebaseMessagingService.kt

class MyFirebaseMessagingService : FirebaseMessagingService() {

val TAG = "Firebase_Message„

override fun onMessageReceived(remoteMessage: RemoteMessage?) {super.onMessageReceived(remoteMessage)

// Check if message contains a data payload.remoteMessage?.let {

if (it.data.isNotEmpty()) Log.d(TAG, "Message data payload: " + remoteMessage.data)

}

// Check if message contains a notification payload.remoteMessage?.notification?.let {

Log.d(TAG, "Message Notification Body: ${it.body}") }

}

private fun sendNotification(messageBody: String?){// Todo: Show notification

}}

4/18/2018Sicz-Mesziár János – Mezei József 13

Page 14: Mobil Informatikai rendszerekusers.nik.uni-obuda.hu/malk/mobil/2018 tavasz/06_-_FCM_GCM_C2D… · Firebase II. Sicz-MesziárJános –Mezei József 4/18/2018 3 Email SMS Értesítések

FCM üzenet fogadása – Android (5)

A bejövő üzenetek automatikusan is meg tudnak jelenni a

notification bar-on.

Foreground vs Background

Bővebben:

https://firebase.google.com/docs/cloud-

messaging/android/receive

4/18/2018Sicz-Mesziár János – Mezei József 14