Adım 1 - Gerekenler
Android mobil uygulama & Android Studio |
Firebase Cloud Messaging ve Huawei Push Kit - google_services.json & agconnect_services.json |
RMC Hesabı - AppAlias |
Minimum 17 API Level Test Cihazı |
Adım 2 - Bağımlılıkları Eklemek
2.1 app/build.gradle (Module: app) açıp aşağıdaki kod blogunu ekleyiniz.
dependencies { implementation 'com.euromsg:euromsg:$euromessage_version' } apply plugin: 'com.huawei.agconnect' apply plugin: 'com.google.gms.google-services' |
2.2 project / build.gradle'i açıp aşağıdaki kod blogunu ekleyiniz.
buildscript { repositories { google() jcenter() maven {url 'http://developer.huawei.com/repo/'} } dependencies { classpath "com.android.tools.build:gradle:$gradle_version" classpath 'com.google.gms:google-services:$google_version' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" classpath 'com.huawei.agconnect:agcp:$huawei_version' } } allprojects { repositories { google() jcenter() maven {url 'http://developer.huawei.com/repo/'} } } |
Seçeneğine tıklamayı unutmayınız
Adım 3 - Android Manifest'e Kodları Eklemek
<uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> |
<service android:name="euromsg.com.euromobileandroid.service.EuroFirebaseMessagingService" android:exported="false"> <intent-filter> <action android:name="com.google.firebase.MESSAGING_EVENT" /> </intent-filter> </service> <service android:name="euromsg.com.euromobileandroid.service.EuroHuaweiMessagingService" android:exported="false"> <intent-filter> <action android:name="com.huawei.push.action.MESSAGING_EVENT" /> </intent-filter> </service> |
Bu tanımlamalar sayesinde gelen FCM ve HMS'den gelen push bildirimleri Euromessage tarafından karşılanacaktır. Uygulamanızın Application Class - eğer yoksa - tanımlamanız gerekebilir. Burada yapmanız gereken yeni bir class oluşturup Application Class’tan extend etmek ve AndroidManifest dosyasında bunu tanımlamak olacaktır;
<application android:name=".MainApplication" android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > |
Adım 4 - Gerekli Kodları Eklemek
Aşağıda örnek bir implementasyon görülmektedir; Bunun için FIREBASE_APP_ALIAS ve HUAWEI_APP_ALIAS'ı RMC panel üzerinden tanımlamanız gerekmektedir.
public class MainApplication extends Application { private final String FIREBASE_APP_ALIAS = "euromessage-android"; private final String HUAWEI_APP_ALIAS = "euromsg-huawei"; private static EuroMobileManager euroMobileManager; @Override public void onCreate() { super.onCreate(); euroMobileManager = EuroMobileManager.init(FIREBASE_APP_ALIAS, HUAWEI_APP_ALIAS, this); euroMobileManager.registerToFCM(getBaseContext()); } } |
4.1 Firebase Messaging Servis'te Token Toplama
EuroFirebaseMessagingService onNewToken() methodu içerisinde ilk kez açılan bir uygulama için token'i alır ve subscribe eder.
Daha önceden sahip olduğunuz token'ları EuroMobileManager'a setlemek için aşağıdaki kodları eklemeniz gerekmektedir
private void setExistingFirebaseTokenToEuroMessage() { FirebaseInstanceId.getInstance().getInstanceId() .addOnCompleteListener(new OnCompleteListener<InstanceIdResult>() { @Override public void onComplete(@NonNull Task<InstanceIdResult> task) { if (!task.isSuccessful()) { return; } String token = task.getResult().getToken(); euroMobileManager.subscribe(token, getApplicationContext()); } }); } |
4.2 Huawei Messaging Servis'te Token Toplama
Huawei'de telefonun EMUI sürümüne göre token toplama yöntemi de değişmektedir.
EMUI 10'dan düşük sürümler EuroHuaweiMessagingService içindeki onNewToken()’da tokenları subscribe ederken,
EMUI 10 üzerinde telefonlar aşağıdaki gibi tokenları generate eder. Generate edilmiş bu token'i euroMobileManager'a subscribe etmeniz gerekmektedir.
private void setHuaweiTokenToEuromessage() { new Thread() { @Override public void run() { try { String appId = AGConnectServicesConfig.fromContext(getApplicationContext()).getString("client/app_id"); final String token = HmsInstanceId.getInstance(getApplicationContext()).getToken(appId, "HCM"); euroMobileManager.subscribe(token, getApplicationContext()); Log.i("Huawei Token", "" + token); } catch (ApiException e) { Log.e("Huawei Token", "get token failed, " + e); } } }.start(); } |
4.3 İki servisin aktif olduğu cihazlarda tokeni iki kere yollamamak için
if (!EuroMobileManager.checkPlayService(getApplicationContext())) { setHuaweiTokenToEuromessage(); } |
Kodların son hali ;
public class MainApplication extends Application { private final String FIREBASE_APP_ALIAS = "euromessage-android"; private final String HUAWEI_APP_ALIAS = "euromsg-huawei"; private static EuroMobileManager euroMobileManager; @Override public void onCreate() { super.onCreate(); euroMobileManager = EuroMobileManager.init(FIREBASE_APP_ALIAS, HUAWEI_APP_ALIAS, this); euroMobileManager.registerToFCM(getBaseContext()); setExistingFirebaseTokenToEuroMessage(); if (!EuroMobileManager.checkPlayService(getApplicationContext())) { setHuaweiTokenToEuromessage(); } } } |
Adım 5 - Token Kullanıcı Üye Eşleşmesi
Kullanıcıya ait çeşitli parametreler biliniyorsa kayıt aşamasında ya da sonrasında aşağıdaki gibi activity'de eklenebilir. Aşağıdaki kod bloğu sayesinde aynı bilgilere ait kullanıcı Euromessage RMC panelinde varsa, alınan token kullanıcı ile eşleştirilecektir.
Bu method sayesinde subscribe işlemi için sunucuya gönderilen json objesinde extra parametresine değerler eklenmiş olur ve kullanıcının hangi token ile eşleştirileceği belirtilmiş olur. Zorunlu parametreler ve opsiyonel parametreler gönderildikten sonra sync() metodu çağrılmalıdır.
--Zorunlu parametreler-- euroMobileManager.setEmail("melike.yildirim@euromsg.com", this); euroMobileManager.setEuroUserId("123455", this); --Opsiyonel parametreler-- euroMobileManager.setAppVersion("1.1"); euroMobileManager.setFacebook("euroFB", this); euroMobileManager.setTwitterId("euroTW", this); euroMobileManager.setPhoneNumber("05320000000", this); euroMobileManager.setLocation(41.12,29.11); euroMobileManager.sync(this); |
Bir uygulama mobil cihaza kurulduğu anda push subscription servisi ile bu cihaza ait token bilgisi RMC veri tabanına yazılır. Bir token; kullanıcı uygulamada oturum açana kadar “anonim” yani hiç bir kullanıcı ile eşleştirilmeden kaydedilir. Bu tokenın bir kullanıcıyla eşleştirilebilmesi için mutlaka cihazda oturum açılmış olması ve SDK tarafından bu tokenın sahibini tanımlayıcı bir bilginin (KEY_ID yada EMAIL) RMC'ye gönderilmesi gerekir. Bu bilgiler push mesajı payload unda "extra" : {} bloğunda yer alır.
User-token eşleşmesi için gönderilen payload ta extra parametresi bu şekilde parametreler alacaktır;
"extra" : {"email" : "melike.yildirim@euromsg.com", "keyID" : "123456"} |
Adım 6 - Okundu Raporu
Uygulamaya bildirim geldiğinde Activity deki intent.getExtra içerisine gelecek ve bu method bildirimleri karşılayacaktır. Bu şekilde push mesajının içeriği Activity içerisinden okunur. reportRead metodu okundu bilgisinin iletilmesi içindir.
@Override protected void onNewIntent(Intent intent) { super.onNewIntent(intent); if (intent.getExtras() != null) { EuroMobileManager.getInstance().reportRead(intent.getExtras()); } } @Override protected void onResume() { super.onResume(); if (getIntent().getExtras() != null && EuroMobileManager.getInstance().getNotification(getIntent()) != null) { EuroMobileManager.getInstance().reportRead(getIntent().getExtras()); } } |
Push Kampanyası Cirolarının Panele Yansıması
Gelen push bildirimine tıkladıktan sonra yapılan satın almanın RMC panelinde Ciro alanına yansıması için aşağıdaki metodu kullanmanız gerekmektedir.
Push ekranında bulunan Özel Parametreler alanına utm parametrelerini girmelisiniz.
Örn: utm_medium=apppush;utm_source=related;utm_campaign=campaign_name
Not: utm_campaign her seferinde farklı olması gerektiği için oluşturduğunuz push kampanyasının ID’sini değişken olarak kullanabilirsiniz. Bunun için <##CAMP_ID##> değişkenini isteğe bağlı bir şekilde kullanabilirsiniz.Push bildirimi tıklandıktan sonra size aşağıdaki gibi bir data dönecektir.
Örnek Data:
{ “data”: { “pushType” : “Text”, “url” : “”, “mediaUrl” : “”, “pushId” : “df73706e-1138-40f2-b687-c10c43ee8138”, “altUrl”: “”, “sound”:“”, “message”:“Mesaj”, “title”:“Başlık”, “utm_medium”: “apppush”, “utm_campaign”: “campaign_name”, “utm_source”: “related”, } }
Bu datayı aynı deeplink kullanımında olduğu gibi handle ederek utm parametrelerini pusha tıklandığında Visilabs’e event olarak göndermelisiniz. Örnek Visilabs event kodlarını alt satırda bulabilirsiniz.
HashMap<String, String> parameters= new HashMap<String, String>(); parameters.put("utm_campaign ","campaign_name"); parameters.put("utm_source","related"); parameters.put("utm_medium","apppush"); parameters.put("OM.exVisitorID”, "KeyID veya E-posta"); //RMC sistemindeki referansınız parameters.put("OM.sys.TokenID","Kullanıcı Push Mesaj Tokenı"); parameters.put("OM.sys.AppID","AppAlias"); Visilabs.CallAPI().customEvent("Campaign", parameters);
Aşağıdakileri de kontrol edebilirsiniz
Euromessage Android SDK Diğer Özellikleri
FCM ve HMS' nin RMC'ye Entegrasyonu
Örnek Uygulamalar :