Upload
others
View
1
Download
0
Embed Size (px)
Citation preview
Mobil Informatikai RendszerekFCM – Firebase Cloud Messaging
GCM, C2DM, Push notification
2018. április 18.
Sicz-Mesziár Já[email protected]
Mezei József
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
Firebase II.
4/18/2018Sicz-Mesziár János – Mezei József 3
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
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
Push notification – data flow
4/18/2018Sicz-Mesziár János – Mezei József 5
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
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
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..."]
}
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"}
]
}
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
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
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
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
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