Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Table of Contents

Bildirim Alanın Özelleştirilmesi

...

  • notificationSmallIcon: Int

  • notificationSmallIconDarkMode: Int

  • isNotificationLargeIcon: Boolean

  • notificationLargeIcon: Int

  • notificationLargeIconDarkMode

  • notificationPushIntent: String

  • notificationChannelName: String

  • notificationColor: String

Opsiyonel Parametreler

Açıklama

notificationSmallIcon

Status Bar’da ve bildirim alanının sol üstünde görüntülenecek ikonu girmek içindir. Projenizdeki herhangi bir resource un id sini vermeniz gerekmektedir.

Eğer değer girilmezse uygulamanızın simgesi kullanılır.

notificationSmallIconDarkMode

Cihaz koyu temadayken görünecek notificationSmallIcon değerini girmek içindir.

Eğer değer girilmezse uygulamanızın simgesi kullanılır.

isNotificationLargeIcon

Bildirim alanının sağında bir ikon bulunup bulunmamasına karar vermek içindir.

true → bulunur

false → bulunmaz

Eğer değer girilmezse büyük ikon kullanılmaz.(false)

notificationLargeIcon

Bildirim alanının sağında görünecek büyük ikonu girmek içindir. Projenizdeki herhangi bir resource un id sini vermeniz gerekmektedir.

Eğer değer girilmezse ve isNotificationLargeIcon true ise uygulamanızın simgesi kullanılır.

notificationLargeIconDarkMode

Cihaz koyu temadayken görünecek notificationLargeIcon değerini girmek içindir.

Eğer değer girilmezse ve isNotificationLargeIcon true ise uygulamanızın simgesi kullanılır.

notificationPushIntent

Bildirime tıklandığında açılacak Activity'e karar vermek içindir. Burda Activity'nin tam yolunun girilmesi gerekmektedir.

Eğer değer girilmezse uygulamanızın başlatıcı aktivitesine (launcher activity) yönlenecektir.

notificationChannelName

Bildirim kanalına verilecek ismi girmek içindir.

Eğer değer girilmezse uygulamanızın ismi kullanılır.

notificationColor

Bildirim alanında kullanılacak accent color değerini girmek içindir.

notificationPriority

Bildirimin önem seviyesini ayarlamak içindir. (heads-up veya pop-up bildirimler için önem seviyesi HIGH olmalıdır)

Tüm parametreleri içeren örnek bir kullanım aşağıdaki gibidir.

...

Code Block
languagejava
RelatedDigital.setIsPushNotificationEnabled(
  context,
  true,
  "googleAppAliasDeğeri",
  "huaweiAppAliasDeğeri",
  token,
  R.drawable.text_icon,
  R.drawable.text_icon_dark_mode,
  true,
  R.mipmap.ic_launcher,
  R.mipmap.ic_launcher,
  "com.relateddigital.androidexampleapp.PushNotificationActivity",
  "relateddigital-android-test",
  "#d1dbbd"
);

Token-Ü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 sunucularımıza gönderilebilir. Aşağıdaki kod bloğu sayesinde aynı bilgilere ait kullanıcı 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.

Kotlin

...

languagekotlin

...

Push Bildirim İzni Alın (Android 13 veya daha yüksek)

SDK versiyonlarınızı doğrulayın. Compile ve target SDK versiyonu en az 33 olmalıdır.

Code Block
languagegroovy
android {
    compileSdkVersion "33"

    defaultConfig {
        targetSdkVersion "33"
    }
}

Aşağıdaki Euromessage metodunu kullanarak, push notification izni isteme prompt’unu tetikleyin.

Kotlin

Code Block
languagekotlin
RelatedDigital.requestNotificationPermission(activity)

Java

Code Block
language

...

kotlin
RelatedDigital.

...

Mobil kanaldan gelen datalarınızın RMC'ye yüklenebilmesi için, aktif RMC hesabınızda kullanmış olduğunuz referans değeriniz ne ise (KEY_ID* veya E-Mail) mobil kanaldan gelen dataların da bu referans ile gelmesine dikkat ediniz."

*KEY_ID: Uygulama sahibi tarafından müşterisinin tekilleştirilmesi için kullanılan id değerleridir. Bunlar CRM id, userId, customerId, accountId gibi farklı isimlerle ifade ediliyor olabilir.

Kullanıcı-token eşleşmesi için gönderilen payload da extra parametresi bu şekilde parametreler alacaktır;

...

Code Block
languagejson
"extra" : {
  "email" : "test@euromsg.com",
  "keyID" : "testRelatedDigitalUserId"
}

IYS E-Posta Kaydı

Kotlin

Code Block
languagekotlin
val callback: EuromessageCallback = object : EuromessageCallback {
  override fun success() {
    Log.i("IYS Kaydı", "Başarılı")
  }

  override fun fail(errorMessage: String?) {
    Log.e("IYS Kaydı", "Başarısız : $errorMessage")
  }
}

RelatedDigital.registerEmail(
  context = context,
  email = "test@euromsg.com",
  emailPermit = EmailPermit.ACTIVE,
  isCommercial = false,
  callback = callback
)

Java

...

languagejava

...

requestNotificationPermission(activity);

Token-Ü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 sunucularımıza gönderilebilir. Aşağıdaki kod bloğu sayesinde aynı bilgilere ait kullanıcı 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.

Kotlin

Code Block
languagekotlin
--Zorunlu parametreler--
RelatedDigital.setEmail(context, "test@euromsg.com")
RelatedDigital.setRelatedDigitalUserId(context, "testRelatedDigitalUserId")

--Opsiyonel parametreler--
RelatedDigital.setEmailPermit(context, EmailPermit.ACTIVE)
RelatedDigital.setGsmPermit(context, GsmPermit.ACTIVE)
RelatedDigital.setTwitterId(context, "testTwitterId")
RelatedDigital.setFacebookId(context, "testFacebookId")
RelatedDigital.setPhoneNumber(context, "testPhoneNumber")
RelatedDigital.setUserProperty(context, "instagram", "testInstagramId")

RelatedDigital.sync(context)

Java

Code Block
languagejava
--Zorunlu parametreler--
RelatedDigital.setEmail(context, "test@euromsg.com");
RelatedDigital.setRelatedDigitalUserId(context, "testRelatedDigitalUserId");

--Opsiyonel parametreler--
RelatedDigital.setEmailPermit(context, EmailPermit.ACTIVE);
RelatedDigital.setGsmPermit(context, GsmPermit.ACTIVE);
RelatedDigital.setTwitterId(context, "testTwitterId");
RelatedDigital.setFacebookId(context, "testFacebookId");
RelatedDigital.setPhoneNumber(context, "testPhoneNumber");
RelatedDigital.setUserProperty(context, "instagram", "testInstagramId");

RelatedDigital.sync(context);


RelatedDigital.setIsPushNotification() metodu aracılığıyla Push Notification Modülü etkinleştirildiğinde, 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 uygulamada 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. 

Mobil kanaldan gelen datalarınızın RMC'ye yüklenebilmesi için, aktif RMC hesabınızda kullanmış olduğunuz referans değeriniz ne ise (KEY_ID* veya E-Mail) mobil kanaldan gelen dataların da bu referans ile gelmesine dikkat ediniz."

*KEY_ID: Uygulama sahibi tarafından müşterisinin tekilleştirilmesi için kullanılan id değerleridir. Bunlar CRM id, userId, customerId, accountId gibi farklı isimlerle ifade ediliyor olabilir.

Kullanıcı-token eşleşmesi için gönderilen payload da extra parametresi bu şekilde parametreler alacaktır;

Code Block
languagejson
"extra" : {
  "email" : "test@euromsg.com",
  "keyID" : "testRelatedDigitalUserId"
}

IYS E-Posta Kaydı

Kotlin

Code Block
languagekotlin
val callback: EuromessageCallback = object : EuromessageCallback {
  override fun success() {
    Log.i("IYS Kaydı", "Başarılı");
  }

  @Overrideoverride fun  public void fail(errorMessage: String errorMessage?) {
    Log.e("IYS Kaydı", "Başarısız : $errorMessage" + errorMessage);
  }
};

RelatedDigital.registerEmail(
  context = context,
  email = "test@euromsg.com",
  emailPermit = EmailPermit.ACTIVE,
  isCommercial = false,
  callback = callback
);
Info

Eğer kullanıcınız kurumsal bir hesap ise registerEmail() metodundaki isCommercial parametresini true olarak göndermeniz gerekmektedir.

Info

Eğer RMC panel üzerinde bir kullanıcı eşleştirmesi görmüyorsanız, RMC support ekibinden ilgili appKey’in FLAG’ini aktif hale getirmesini talep ediniz.

Okundu Raporu ve Yönlendirme

...

Kotlin

...

languagekotlin

...

Java

Code Block
languagejava
EuromessageCallback callback = new EuromessageCallback() {
  @Override
  public void success() {
    Log.i("IYS Kaydı", "Başarılı");
  }

  @Override
  public void fail(String errorMessage) {
    Log.e("IYS Kaydı", "Başarısız : val" bundle+ = intent.extraserrorMessage);
  }
};

    if (bundle != null) {
            val message = intent.extras!!.getSerializable("message") as Message?
       RelatedDigital.registerEmail(
  context,
  "test@euromsg.com",
  EmailPermit.ACTIVE,
  false,
  callback
);
Info

Eğer kullanıcınız kurumsal bir hesap ise registerEmail() metodundaki isCommercial parametresini true olarak göndermeniz gerekmektedir.

Info

Eğer RMC panel üzerinde bir kullanıcı eşleştirmesi görmüyorsanız, RMC support ekibinden ilgili appKey’in FLAG’ini aktif hale getirmesini talep ediniz.

Okundu Raporu ve Yönlendirme

Kullanıcı bildirime tıkladığında RelatedDigital.setPushIntent()metodu aracılığıyla girdiğiniz Activity açılacaktır. Eğer bu metodu kullanmadıysanız launcher activity açılacaktır. Bu Activity de onNewIntent()metodu içerisinde bildirim içeriği elde edilip kullanıcıyı ilgili sayfaya yönlendirme ve bildirimle ilgili okundu raporu gönderilme işlemlerinin yapılması gerekmektedir.

Kotlin

Code Block
languagekotlin
override fun onNewIntent(intent: Intent?) {
    super.onNewIntent(intent)
    if (messageintent != null) {
        val bundle = intent.extras
    //Okundu raporunun gönderilmesi
    if (bundle != null) {
            val message = RelatedDigital.sendPushNotificationOpenReport(this, message)
 intent.extras!!.getSerializable("message") as Message?
            if  //Kullanıcının ilgili sayfaya yönlendirilmesi - message.url(message != null) {
                //Okundu raporunun gönderilmesi
  ..             } else { RelatedDigital.sendPushNotificationOpenReport(this, message)
                //Kullanıcının Carouselilgili bildirimininsayfaya geldiğiniyönlendirilmesi ve- kullanıcınınmessage.url
bir öğeye tıkladığını gösterir             ..
   val itemClickedUrl = bundle.getString("CarouselItemClickedUrl")      } else {
        if  (itemClickedUrl != null && itemClickedUrl != "") {
        // Carousel bildiriminin geldiğini ve kullanıcının bir öğeye tıkladığını gösterir
            //Kullanıcının ilgili sayfaya yönlendirilmesi -val itemClickedUrl = bundle.getString("CarouselItemClickedUrl")
                if (itemClickedUrl ..!= null && itemClickedUrl != "") {
          }          //Kullanıcının ilgili sayfaya yönlendirilmesi }- itemClickedUrl
       }     } }

Java

Code Block
languagejava
@Override protected void onNewIntent(Intent intent) {  ..
  super.onNewIntent(intent);     if(intent != null) {      }
  Bundle bundle = intent.getExtras();       }
 if (bundle != null) {   }
    }
}

Java

Code Block
languagejava
@Override
protected   Message message = (Message) intent.getExtras().getSerializable("message");
void onNewIntent(Intent intent) {
      super.onNewIntent(intent);
    if(messageintent != null) {
        Bundle bundle    = intent.getExtras();
  //Okundu raporunun gönderilmesi    if (bundle != null) {
        RelatedDigital.sendPushNotificationOpenReport(this, message);   Message message = (Message) intent.getExtras().getSerializable("message");
         //Kullanıcının ilgili sayfaya yönlendirilmesi - message.getUrl(if(message != null) {
               .. //Okundu raporunun gönderilmesi
               } else { RelatedDigital.sendPushNotificationOpenReport(this, message);
                // Carousel bildiriminin geldiğini ve kullanıcının bir öğeye tıkladığını gösterirKullanıcının ilgili sayfaya yönlendirilmesi - message.getUrl()
                ..
      String itemClickedUrl = bundle.getString("CarouselItemClickedUrl");
                if(itemClickedUrl != null && !itemClickedUrl.equals("")   } else {
                // Carousel bildiriminin geldiğini ve kullanıcının bir öğeye tıkladığını gösterir
                String itemClickedUrl = bundle.getString("CarouselItemClickedUrl");
                if(itemClickedUrl != null && !itemClickedUrl.equals("")) {
                    //Kullanıcının ilgili sayfaya yönlendirilmesi - itemClickedUrl
                    ..
                }
            }
        }
    }
}
Info

Eğer RMC’den kampanya gönderimlerinizde push bildirimi cihazınıza debug modda ulaşıyor, release modda ulaşmıyorsa, uygulamanızda pro-guard ile ilgili sorunlarınıza göz atın.

proguard-rules.pro 'ya aşağıdaki kodları ekleyebilirsiniz;

Code Block
-keep class com.relateddigital.**{*;}

Bildirim Sesi Ayarlama

Bildirim kampanyalarında kullanılacak sesi belirlemek/değiştirmek için öncelikle kullanılacak ses dosyalarının projenize eklenmesi gerekmektedir.

Ses dosyasının eklenmesi gereken yol -> res/raw/my_custom_sound.mp3

Bu adımdan sonra ses dosyasının ismini uzantısız olarak RMC panelinde Ayarlar / Kampanya Ayarları / Push Uygulamaları / Android Uygulamanız / Özel Ses Dosyası kısmına eklemeniz gerekmektedir.

...

Ciroların Panele Yansıması

Gelen bildirimlere tıklandıktan sonra yapılan satın alımların RMC panelinde Ciro alanına yansıması için:

Mobil bildirim kampanyası ekranında bulunan Özel Parametreler alanına utm parametrelerini girmelisiniz.
Örn: utm_medium=apppush;utm_source=related;utm_campaign=campaign_name

Info

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.

  1. Image Added

Push Bildirim Mesajlarını Kullanma

Son 30 gün içerisinde gönderilmiş anonim bildirim mesajlarına aşağıdaki gibi erişebilirsiniz.

Mesajlar tarihe göre sıralanmıştır. Son gelen mesaj listenin ilk başında gösterilir.

Kotlin

Code Block
languagekotlin
val pushMessageInterface: PushMessageInterface = object : PushMessageInterface {
  override fun success(pushMessages: List<Message>) {
    // pushMessages değişkenini kullanarak geliştirmenizi            //Kullanıcının ilgili sayfaya yönlendirilmesi - itemClickedUrlyapabilirsiniz
  }

  override fun fail(errorMessage: String) {
    Log.e("Geçmiş Bildirimler", errorMessage)
  }
}

RelatedDigital..
     getPushMessages(activity, pushMessageInterface)

Java

Code Block
languagejava
PushMessageInterface pushMessageInterface = new PushMessageInterface() {
  @Override
  public void success(List<Message> pushMessages) {
}     // pushMessages değişkenini kullanarak geliştirmenizi yapabilirsiniz
  }

  @Override
  public void }fail(String errorMessage)    }
}
Info

Eğer RMC’den kampanya gönderimlerinizde push bildirimi cihazınıza debug modda ulaşıyor, release modda ulaşmıyorsa, uygulamanızda pro-guard ile ilgili sorunlarınıza göz atın.

proguard-rules.pro 'ya aşağıdaki kodları ekleyebilirsiniz;

Code Block
-keep class com.relateddigital.**{*;}

Bildirim Sesi Ayarlama

Bildirim kampanyalarında kullanılacak sesi belirlemek/değiştirmek için öncelikle kullanılacak ses dosyalarının projenize eklenmesi gerekmektedir.

res/raw/my_custom_sound.mp3

Bu adımdan sonra ses dosyasının ismini uzantısız olarak RMC panelinde Ayarlar / Kampanya Ayarları / Push Uygulamaları / Android Uygulamanız / Özel Ses Dosyası kısmına eklemeniz gerekmektedir.

...

Ciroların Panele Yansıması

Gelen bildirimlere tıklandıktan sonra yapılan satın alımların RMC panelinde Ciro alanına yansıması için:

Mobil bildirim kampanyası ekranında bulunan Özel Parametreler alanına utm parametrelerini girmelisiniz.
Örn: utm_medium=apppush;utm_source=related;utm_campaign=campaign_name

Info

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.

  1. Image Removed

Geçmiş Bildirim Mesajları

Son 30 gün içerisinde gönderilmiş bildirim mesajlarına aşağıdaki gibi erişebilirsiniz.

Mesajlar tarihe göre sıralanmıştır. Son gelen mesaj listenin ilk başında gösterilir.

{
    Log.e("Geçmiş Bildirimler", errorMessage)
  }
};

RelatedDigital.getPushMessages(activity, pushMessageInterface);

Eğer bildirimleri kullanıcı bazlı depolamak ve almak istiyorsanız, kullanıcınız login olduktan sonra aşağıdaki method aracılığıyla kullanıcı ID sini (email, telefon no, vb.) SDK ya iletmeniz gerekmektedir.

Kotlin

Code Block
languagekotlin
RelatedDigital.setNotificationLoginID("kullanıcı_id", context)

Java

Code Block
languagejava
RelatedDigital.setNotificationLoginID("kullanıcı_id", context);

Kullanıcı ID yukarıdaki gibi set edildikten sonra gelen bildirimler o an login durumda olan kullanıcının ID si ile beraber kaydedilir. Uygulamanızda login durumdaki kullanıcıya gelen son 30 gün içindeki bildirimleri aşağıdaki getPushMessagesWithID() methodu aracılığıyla elde edebilirsiniz.

Kotlin

Code Block
languagekotlin
val pushMessageInterface: PushMessageInterface = object : PushMessageInterface {
  override fun success(pushMessages: List<Message>) {
    // pushMessages değişkenini kullanarak geliştirmenizi yapabilirsiniz
  }

  override fun fail(errorMessage: String) {
    Log.e("Geçmiş Bildirimler", errorMessage)
  }
}

RelatedDigital.getPushMessagesgetPushMessagesWithID(activity, pushMessageInterface)

...

Code Block
languagejava
PushMessageInterface pushMessageInterface = new PushMessageInterface() {
  @Override
  public void success(List<Message> pushMessages) {
    // pushMessages değişkenini kullanarak geliştirmenizi yapabilirsiniz
  }

  @Override
  public void fail(String errorMessage) {
    Log.e("Geçmiş Bildirimler", errorMessage)
  }
};

RelatedDigital.getPushMessagesgetPushMessagesWithID(activity, pushMessageInterface);

Bildirim Mesajı İçeriği

Veri Tipi

Değişken

Açıklama

String

mediaUrl

Foto, video url

String

altUrl

Alternate URL

String

campaignId

Kampanya ID si

String

pushId

Bildirim ID si

String

url

Kampanya URL si

String

message

Bildirim Mesajı

String

title

Bildirim Başlığı

String

sound

Bildirim Sesi

PushType

pushType

Bildirim Tipi

Map<String, String>

params

Özel Parametreler

Uygulama Simge Bildirimleri

...