Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Info

Her tıklama sonrası, SDK girilen callback i çağırır ve tanımlanan callback i kaldırır. Bu yüzden callback kullanmak isteğiniz her aksiyondan önce yeni bir callback tanımlaması yapıp setInAppButtonInterface metodu aracılığıyla SDK ya iletmeniz gerekmektedir. Daha sonra customEvent metoduyla ilgili aksiyonu tetikleyebilirsiniz.

Özel Font Kullanımı

  1. Uygulama-içi mesajlarda özel font kullanımı için ilk olarak projenizin res klasörü altında font dosyası oluşturunuz(yoksa).

    Image Modified

     

  2. Oluşturduğunuz klasörün içerisine istediğiniz fontları ekleyebilirsiniz.

    Image Modified

     

  3. Son olarak arayüzden uzantısız bir şekilde kullanmak istediğiniz fontun adını giriniz.

    Image Modified


Uygulama-İçi Mesaj Tasarımları

Pop-up - Görsel, Başlık, Yazı & Buton

Mini - İkon & Yazı

Tam Ekran Görsel

Image ModifiedImage Modified

 

Image Modified

 

Tam Ekran Görsel ve Buton

Pop-up - Görsel, Başlık, Yazı ve Buton

Pop-up Anket

Image Modified

 

Image Modified

 

Image Modified

 

Pop-up - Yazı ve Butonlu NPS

Native Alert & Action Sheet

1-10 Puanlama NPS

Image Modified

 

Image Modified

 

Image Modified

Yıldızlı anket & ikinci pop-up

Yarım Ekran Görsel

Carousel

Image Modified

 

Image Modified

 

Image Modified

 

Favori Özellik Aksiyonu

RMC panel üzerindeki target aksiyonlarından tanımladığınız favori değişkenlerinizi aşağıdaki gibi mobil uygulama üzerinden alıp kullanabilirsiniz.

...

Code Block
languagejava
StoryItemClickListener storyItemClickListener = new StoryItemClickListener() {
  @Override
  public void storyItemClicked(String storyLink) {
    //Burada storyLink değişkenini kullanarak gerekli yönlendirmeyi yapabilirsiniz         
  }
}; 

StoryRequestListener storyRequestListener = new StoryRequestListener() {
  @Override
  public void onRequestResult(boolean isAvailable) {
    if (!isAvailable) {
      //Burada StoryRecyclerView ı kaldırmalısınız
      binding.storyRecyclerView.visibility = View.GONE
    }         
  }
};
   
binding.storyRecyclerView.setStoryActionIdWithRequestCallback(
  context,
  storyId,
  storyItemClickListener,
  storyRequestListener);

Öneriler Aksiyonu

Öneriler aksiyonunu uygulamanızda aşağıdaki gibi tetikleyebilirsiniz. 

Kotlin

App Banner

Uygulamanızın istediğiniz bir layout dosyasında istediğiniz bir yere BannerRecyclerView ı yerleştiriniz. Örnek xml :

Code Block
languagekotlinxml
val callback: VisilabsCallback = object : VisilabsCallback {
  override fun success(response: VisilabsResponse?) {
    try {
      // Burada gelen öneriler listesiyle ilgili aksiyonu alabilirsiniz.Örnek:
      val jsonObject = response!!.json<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/container"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <com.relateddigital.relateddigital_android.inapp.bannercarousel.BannerRecyclerView
      val groupTitle = jsonObject!!.getString("title")android:id="@+id/bannerListView"
      val jsonArray = jsonObject.getJSONArray("recommendations")android:layout_width="match_parent"
      for (i in 0 until jsonArray.length()) {
  android:layout_height="150dp"/>

    <Button
      val currentProductObject = jsonArray.getJSONObject(i)android:id="@+id/btn_show_banner"
        val currentProductTitle = currentProductObject.getString("title")android:layout_gravity="center"
        val currentProductPrice = currentProductObject.getDouble("price")android:layout_width="150dp"
        val currentProductFreeShipping = currentProductObject.getBoolean("freeshipping")android:layout_height="50dp"
        android:layout_marginTop="20dp"
 val qs = currentProductObject.getString("qs")         //Bu şekilde devam eder...android:background="@drawable/rounded_corners_background"
         }
    } catch (e: Exception) {
      Log.e("Öneriler", e.message)
    }
  }

  override fun fail(response: VisilabsResponse?) {
    Log.e("Öneriler", response!!.error!!.message)
  }
}

RelatedDigital.getRecommendations(
  context = context,
  zoneId = "zoneIdDeğeri",
  productCode = "ÜrünKoduDeğeri",
  visilabsCallback = callback)

Java

Code Block
languagejava
VisilabsCallback callback = new VisilabsCallback() {
  @Override
  public void success(VisilabsResponse response) {
    tryandroid:text="@string/show_banner" />
</LinearLayout>

Daha sonra ilgili program dosyasında (Java veya Kotlin) BannerRecyclerView objesine erişip requestBannerCarouselAction() methodunun çağırılması gereklidir. Bu method bir zorunlu (context: Context), 3 opsiyonel parametre(properties: HashMap<String, String>?, bannerRequestListener: BannerRequestListener?, bannerItemClickListener: BannerItemClickListener?) almaktadır.

properties parametresi sorguya eklemek istediğiniz ekstra query parametreleri içindir.

bannerRequestListener parametresi eğer sorgu sonucunda bir şeyler ters gider ve sunuculardan bilgi alınamazsa bunun size bildirimlesi içindir. Böylece layoutunuza eklediğiniz BannerRecyclerView in visibility sini View.GONE veya View.INVISIBLE yaparak ilgili alanın boş görünmesini engelleyebilirsiniz.

bannerItemClickListener parametresi kullanıcının herhangi bir banner a tıklaması sonucu SDK’nın otomatik yönlendirmesi yerine kendiniz yönlendirme yapmak istiyorsanız kullanabileceğiniz bir parametredir.

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

Kotlin

Code Block
languagekotlin
val bannerItemClickListener = object : BannerItemClickListener {
  override fun bannerItemClicked(bannerLink: String?) {
    if(bannerLink.isNullOrEmpty()) {
      return
    }
    Toast.makeText(applicationContext, bannerLink, Toast.LENGTH_SHORT).show()
    Log.i("link banner", bannerLink)
    try {
      val viewIntent = Intent(Intent.ACTION_VIEW, Uri.parse(bannerLink))
      startActivity(viewIntent)
    } catch (e: Exception) {
      Log.e(LOG_TAG, "The link is not formatted properly!")
    }
  }
}

val bannerRequestListener = object : BannerRequestListener {
  override fun onRequestResult(isAvailable: Boolean) {
      if (!isAvailable) {
        binding?.bannerListView.visibility = View.GONE
      }
  }
}

val properties = HashMap<String, String>()
properties["OM.inapptype"] = "banner_carousel"

binding?.bannerListView.requestBannerCarouselAction(
  context = applicationContext,
  properties = properties,
  bannerRequestListener = bannerRequestListener,
  bannerItemClickListener = bannerItemClickListener
)

Java

Code Block
languagejava
BannerItemClickListener bannerItemClickListener = new BannerItemClickListener() {
  @Override
  public void bannerItemClicked(String bannerLink) {
    if(bannerLink == null || bannerLink.isEmpty()) {
      return;
    }
    Toast.makeText(getApplicationContext(), bannerLink, Toast.LENGTH_SHORT).show();
    Log.i("link banner", bannerLink);
    try {
      Intent viewIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(bannerLink));
      startActivity(viewIntent);
    } catch (Exception e) {
      Log.e(LOG_TAG, "The link is not formatted properly!");
    }
  }
};

BannerRequestListener bannerRequestListener = new BannerRequestListener() {
  @Override
  public void onRequestResult(boolean isAvailable) {
      if (!isAvailable) {
        binding.bannerListView.visibility = View.GONE;
      }
  }
};

HashMap<String, String> properties = new HashMap<String, String>();
properties.put("OM.inapptype", "banner_carousel");

binding.bannerListView.requestBannerCarouselAction(
  applicationContext,
  properties,
  bannerRequestListener,
  bannerItemClickListener
);

Öneriler Aksiyonu

Öneriler aksiyonunu uygulamanızda aşağıdaki gibi tetikleyebilirsiniz. 

Kotlin

Code Block
languagekotlin
val callback: VisilabsCallback = object : VisilabsCallback {
  override fun success(response: VisilabsResponse?) {
    try {
      // Burada gelen öneriler listesiyle ilgili aksiyonu alabilirsiniz.Örnek:
      val jsonObject = response!!.json
      val groupTitle = jsonObject!!.getString("title")
      val jsonArray = jsonObject.getJSONArray("recommendations")
      for (i in 0 until jsonArray.length()) {
        val currentProductObject = jsonArray.getJSONObject(i)
        val currentProductTitle = currentProductObject.getString("title")
        val currentProductPrice = currentProductObject.getDouble("price")
        val currentProductFreeShipping = currentProductObject.getBoolean("freeshipping")
        val qs = currentProductObject.getString("qs")
        //Bu şekilde devam eder...
      }
    } catch (e: Exception) {
      Log.e("Öneriler", e.message)
    }
  }

  override fun fail(response: VisilabsResponse?) {
    Log.e("Öneriler", response!!.error!!.message)
  }
}

RelatedDigital.getRecommendations(
  context = context,
  zoneId = "zoneIdDeğeri",
  productCode = "ÜrünKoduDeğeri",
  visilabsCallback = callback)

Java

Code Block
languagejava
VisilabsCallback callback = new VisilabsCallback() {
  @Override
  public void success(VisilabsResponse response) {
    try {
      // Burada gelen öneriler listesiyle ilgili aksiyonu alabilirsiniz.Örnek:
      JSONObject jsonObject = response.getJson();
      String groupTitle = jsonObject.getString("title");
      JSONArray jsonArray = jsonObject.getJSONArray("recommendations");
      for (int i = 0; i < jsonArray.length(); i++) {
      //   BuradaJSONObject gelencurrentProductObject öneriler listesiyle ilgili aksiyonu alabilirsiniz.Örnek:= jsonArray.getJSONObject(i);
         JSONObjectString jsonObjectcurrentProductTitle = responsecurrentProductObject.getJsongetString("title");
      String groupTitle   Double currentProductPrice = jsonObjectcurrentProductObject.getStringgetDouble("titleprice");
       JSONArray  Boolean jsonArraycurrentProductFreeShipping = jsonObjectcurrentProductObject.getJSONArraygetBoolean("recommendationsfreeshipping");
      for (int i =String 0;qs i= < jsonArraycurrentProductObject.lengthgetString("qs"); i++) {
         //Bu şekilde devam eder...
   JSONObject currentProductObject = jsonArray.getJSONObject(i); }
    } catch(Exception e) {
 String   currentProductTitle = currentProductObjectLog.getStringe("title")Öneriler", e.getMessage());
    }    
Double  }
currentProductPrice
= currentProductObject.getDouble("price");
 @Override
  public void fail(VisilabsResponse response) {
 Boolean currentProductFreeShipping = currentProductObjectLog.getBooleane("freeshipping"Öneriler", response.getError().getMessage());
  }
};

RelatedDigital.getRecommendations(
  context,
  String"zoneIdDeğeri",
qs = currentProductObject.getString("qsÜrünKoduDeğeri",
  callback);


Ayrıca, filtreleri ve ek parametreleri de getRecommendations metodu aracılığıyla kullanabilirsiniz.

Kotlin

Code Block
languagekotlin
val callback: VisilabsCallback = object : VisilabsCallback {
  //Buoverride şekilde devam eder...
fun success(response: VisilabsResponse?) {
    try }{
    } catch(Exception e) {
      Log.e("Öneriler", e.getMessage()); // Burada gelen öneriler listesiyle ilgili aksiyonu alabilirsiniz.Örnek:
     } val jsonObject = response!!.json
  }    @Overrideval groupTitle  public void fail(VisilabsResponse response) {
    Log.e("Öneriler", response.getError().getMessage());
  }
};

RelatedDigital.getRecommendations(
  context,
  "zoneIdDeğeri",
  "ÜrünKoduDeğeri",
  callback);

...

Kotlin

Code Block
languagekotlin
val callback: VisilabsCallback = object : VisilabsCallback {
  override fun success(response: VisilabsResponse?) {
    try {
      // Burada gelen öneriler listesiyle ilgili aksiyonu alabilirsiniz.Örnek:= jsonObject!!.getString("title")
      val jsonArray = jsonObject.getJSONArray("recommendations")
      for (i in 0 until jsonArray.length()) {
        val currentProductObject = jsonArray.getJSONObject(i)
        val currentProductTitle = currentProductObject.getString("title")
        val currentProductPrice = currentProductObject.getDouble("price")
        val currentProductFreeShipping = currentProductObject.getBoolean("freeshipping")
        val jsonObjectqs = response!!.jsoncurrentProductObject.getString("qs")
        val//Bu groupTitleşekilde = jsonObject!!.getString("title")devam eder...
      }
   val jsonArray} =catch jsonObject.getJSONArray("recommendations"(e: Exception) {
     for (i in 0 until jsonArray.length()) {Log.e("Öneriler", e.message)
    }
  }

val  currentProductObjectoverride =fun jsonArray.getJSONObject(ifail(response: VisilabsResponse?) {
       val currentProductTitle = currentProductObject.getString("title"Log.e("Öneriler", response!!.error!!.message)
  }
}

   val currentProductPricefilters = currentProductObject.getDouble("price")
        val currentProductFreeShipping = currentProductObject.getBoolean("freeshipping")
        val qs = currentProductObject.getString("qs")
        //Bu şekilde devam eder...
      }
    } catch (e: Exception) {
      Log.e("Öneriler", e.message)
    }
  }

  override fun fail(response: VisilabsResponse?ArrayList<VisilabsTargetFilter>()
val parameters = HashMap<String, String>()
parameters["OM.extra"] = "Extra Value"
val f1 = VisilabsTargetFilter("attr1", "0", "value1")
filters.add(f1)
val f2 = VisilabsTargetFilter("attr2", "1", "value2")
filters.add(f2)

RelatedDigital.getRecommendations(
  context = context,
  zoneId = "zoneIdDeğeri",
  productCode = "ÜrünKoduDeğeri",
  visilabsCallback = callback,
  properties = parameters,
  filters = filters)

Java

Code Block
languagejava
VisilabsCallback callback = new VisilabsCallback() {
  @Override
  public void success(VisilabsResponse response) {
    Log.e("Öneriler", response!!.error!!.message)try {
  } }  val filters// =Burada ArrayList<VisilabsTargetFilter>()gelen valöneriler parameterslistesiyle =ilgili HashMap<String, String>()
parameters["OM.extra"] = "Extra Value"
val f1 = VisilabsTargetFilter("attr1", "0", "value1")
filters.add(f1)
val f2 = VisilabsTargetFilter("attr2", "1", "value2")
filters.add(f2)

RelatedDigital.getRecommendations(
  context = context,
  zoneId = "zoneIdDeğeri",
  productCode = "ÜrünKoduDeğeri",
  visilabsCallback = callback,
  properties = parameters,
  filters = filters)

Java

Code Block
languagejava
VisilabsCallback callback = new VisilabsCallback() {
  @Override
  public void success(VisilabsResponse response) {
    try {
      // Burada gelen öneriler listesiyle ilgili aksiyonu alabilirsiniz.Örnek:
      JSONObject jsonObject = response.getJson();aksiyonu alabilirsiniz.Örnek:
      JSONObject jsonObject = response.getJson();
      String groupTitle = jsonObject.getString("title");
      JSONArray jsonArray = jsonObject.getJSONArray("recommendations");
      for (int i = 0; i < jsonArray.length(); i++) {
         JSONObject currentProductObject = jsonArray.getJSONObject(i);
         String currentProductTitle = currentProductObject.getString("title");
         Double currentProductPrice = currentProductObject.getDouble("price");
         Boolean currentProductFreeShipping = currentProductObject.getBoolean("freeshipping");
         String groupTitleqs = jsonObjectcurrentProductObject.getString("titleqs");
      JSONArray jsonArray = jsonObject.getJSONArray("recommendations");   //Bu şekilde devam eder...
      }
    } catch(Exception e) {
for (int i = 0; i < jsonArray.length(); i++) { Log.e("Öneriler", e.getMessage());
    }    
  JSONObject}
currentProductObject
= jsonArray.getJSONObject(i); @Override
  public void fail(VisilabsResponse response) {
 String currentProductTitle = currentProductObjectLog.getStringe("title")Öneriler", response.getError().getMessage());
  }
};

ArrayList<VisilabsTargetFilter> filters = new ArrayList<VisilabsTargetFilter>();
HashMap<String, String> parameters Double currentProductPrice = currentProductObject.getDouble("price= new HashMap<String, String>();
parameters.put("OM.extra", "Extra Value");
VisilabsTargetFilter f1 = new VisilabsTargetFilter("attr1", "0", "value1");
filters.add(f1);
VisilabsTargetFilter f2 = Boolean currentProductFreeShipping = currentProductObject.getBoolean("freeshippingnew VisilabsTargetFilter("attr2", "1", "value2");
filters.add(f2);

RelatedDigital.getRecommendations(
  context,
  "zoneIdDeğeri",
String qs = currentProductObject.getString("qs");"ÜrünKoduDeğeri",
  callback,
  parameters,
  filters //Bu şekilde devam eder...
      }
    } catch(Exception e) {
      Log.e("Öneriler", e.getMessage());
    }    
  }

  @Override
  public void fail(VisilabsResponse response) {
    Log.e("Öneriler", response.getError().getMessage());
  }
};

ArrayList<VisilabsTargetFilter> filters = new ArrayList<VisilabsTargetFilter>();
= filters);


Öneriler özelliğinin tıklamalarının panele yansıması için, aşağıdaki metot, tıklanan ürünün "qs" değeri ile çağırılmalıdır.

Info

örnek callback metodunda herbir ürün için "qs" parametresinin nasıl elde edilebileceğini görebilirsiniz.

Kotlin

Code Block
languagekotlin
RelatedDigital.trackRecommendationClick(
  context = context,
  qs = qs)

Java

Code Block
languagejava
RelatedDigital.trackRecommendationClick(
  context,
  qs);

Mail Üyelik Formu

RMC panel üzerinden oluşturduğunuz mail üyelik formu aksiyonunu aşağıdaki gibi tetikleyebilirsiniz.

Kotlin

Code Block
languagekotlin
val parameters = HashMap<String, String>()
RelatedDigital.customEvent(
  context = context,
  pageName = "Mail Üyelik",
  properties = parameters,
  parent = activity
)

Java

Code Block
languagejava
HashMap<String, String> parameters = new HashMap<String, String>();
parametersRelatedDigital.put("OM.extra", "Extra Value");
VisilabsTargetFilter f1 = new VisilabsTargetFilter("attr1", "0", "value1");
filters.add(f1);
VisilabsTargetFilter f2 = new VisilabsTargetFilter("attr2", "1", "value2");
filters.add(f2);

RelatedDigital.getRecommendations(
  context,
  "zoneIdDeğeri",
  "ÜrünKoduDeğeri",
  callback,
  parameters,
  filters = filters);

...

Info

örnek callback metodunda herbir ürün için "qs" parametresinin nasıl elde edilebileceğini görebilirsiniz.

Kotlin

Code Block
languagekotlin
RelatedDigital.trackRecommendationClick(
  context = context,
  qs = qs)

Java

Code Block
languagejava
RelatedDigital.trackRecommendationClick(
  context,
  qs);

Mail Üyelik Formu

RMC panel üzerinden oluşturduğunuz mail üyelik formu aksiyonunu aşağıdaki gibi tetikleyebilirsiniz.

Kotlin

Code Block
languagekotlin
val parameters = HashMap<String, String>()
RelatedDigital.customEvent(
  context = context,
  pageName = "Mail Üyelik",
  properties = parameters,
  parent = activity
)

Java

Code Block
languagejava
HashMap<String, String> parameters = new HashMap<String, String>();
RelatedDigital.customEvent(
  context,
  "Mail Üyelik",
  parameters,
  activity
);

...

Info

parent parametresi ile ilgili Activity değerini geçtiğinizden emin olunuz.

RMC panelden oluşturduğunuz aksiyonda bir kural tanımladıysanız bu kuralı da parameters ile geçmeniz gerekmektedir. Örnek:

parameters["type"] = "mail_subs_form"

parameters.put("type", "mail_subs_form");

Çarkıfelek (Spin To Win)

RMC panel üzerinden oluşturduğunuz çarkıfelek aksiyonunu aşağıdaki gibi tetikleyebilirsiniz.

Kotlin

Code Block
languagekotlin
val parameters = HashMap<String, String>()
RelatedDigital.customEvent(
  context = context,
  pageName = "Çarkıfelek",
  properties = parameters,
  parent = activity
)

Java

Code Block
languagejava
HashMap<String, String> parameters = new HashMap<String, String>();
RelatedDigital.customEvent(
  context,
  "Çarkıfelek",
  parameters,
  activity
);

...

Çarkıfelek Yarım Görünüm

...

Çarkıfelek Tam Görünüm

...

 

...

 

Info

parent parametresi ile ilgili Activity değerini geçtiğinizden emin olunuz.

RMC panelden oluşturduğunuz aksiyonda bir kural tanımladıysanız bu kuralı da parameters ile geçmeniz gerekmektedir. Örnek:

parameters["type"] = "spin_to_win"

parameters.put("type", "spin_to_win");
customEvent(
  context,
  "Mail Üyelik",
  parameters,
  activity
);

...

Info

parent parametresi ile ilgili Activity değerini geçtiğinizden emin olunuz.

RMC panelden oluşturduğunuz aksiyonda bir kural tanımladıysanız bu kuralı da parameters ile geçmeniz gerekmektedir. Örnek:

parameters["type"] = "mail_subs_form"

parameters.put("type", "mail_subs_form");

Çarkıfelek (Spin To Win)

RMC panel üzerinden oluşturduğunuz çarkıfelek aksiyonunu aşağıdaki gibi tetikleyebilirsiniz.

Kotlin

Code Block
languagekotlin
val parameters = HashMap<String, String>()
RelatedDigital.customEvent(
  context = context,
  pageName = "Çarkıfelek",
  properties = parameters,
  parent = activity
)

Java

Code Block
languagejava
HashMap<String, String> parameters = new HashMap<String, String>();
RelatedDigital.customEvent(
  context,
  "Çarkıfelek",
  parameters,
  activity
);

Çarkıfelek Yarım Görünüm

Çarkıfelek Tam Görünüm

Image Added

 

Image Added

 

Info

parent parametresi ile ilgili Activity değerini geçtiğinizden emin olunuz.

RMC panelden oluşturduğunuz aksiyonda bir kural tanımladıysanız bu kuralı da parameters ile geçmeniz gerekmektedir. Örnek:

parameters["type"] = "spin_to_win"

parameters.put("type", "spin_to_win");

Aşağıdaki kodu kullanarak kazanılan çarkıfelek dilimindeki linki yakalayabilir ve kullanıcıyı istediğiniz sayfaya yönlendirebilirsiniz. Kodu istediğiniz bir activity içerisine eklemeniz yeterlidir.

NOT: Bu receiver sdkmızın ekli olduğu tüm uygulamalarda Çarkıfelek aksiyonunu dinler. Sorun yaşamamak adına lütfen gelen linkte önce kendi urlinizi doğrulayıp yönlendirme yapınç

Code Block
private val broad = object: BroadcastReceiver() {
  override fun onReceive(context: Context ? , intent : Intent ? ) {
    when(intent?.action) {
      "InAppLink" -> {
        val string = intent.getStringExtra("link")
        Log.i("Deeplink", "Received deeplink: $string")
      }
    }
  }
}

//OnCreate() fonskiyonu içinde
val intentFilter = IntentFilter("InAppLink")
registerReceiver(broad, intentFilter)

// onDestroy() fonksiyonu içinde
override fun onDestroy() {
  super.onDestroy()

  unregisterReceiver(broad)
}

Kazı Kazan (Scratch To Win)

...

Code Block
languagekotlin
val parameters = HashMap<String, String>()
RelatedDigital.customEvent(
  context = context =,
  pageName = "Kazı Kazan",
  properties = parameters,
  parent = activity
)

Java

Code Block
languagejava
HashMap<String, String> parameters = new HashMap<String, String>();
RelatedDigital.customEvent(
  context,
 
pageName = "Kazı Kazan",
  properties = parameters,
  parent = activity
)

...

activity
);

...

Info

parent parametresi ile ilgili Activity değerini geçtiğinizden emin olunuz.

RMC panelden oluşturduğunuz aksiyonda bir kural tanımladıysanız bu kuralı da parameters ile geçmeniz gerekmektedir. Örnek:

parameters["type"] = "scratch_to_win"

parameters.put("type", "scratch_to_win");

Hediye Yağmuru (Gift Rain)

RMC panel üzerinden oluşturduğunuz kazı-kazan aksiyonunu aşağıdaki gibi tetikleyebilirsiniz.

Kotlin

HashMap<String, String>
Code Block
languagejava
kotlin
val parameters = new HashMap<String, String>();
RelatedDigital.customEvent(
  context = context,
  pageName = "KazıHediye KazanYağmuru",
  properties = parameters,
  parent = activity
);

...

Java

...

parent parametresi ile ilgili Activity değerini geçtiğinizden emin olunuz.

RMC panelden oluşturduğunuz aksiyonda bir kural tanımladıysanız bu kuralı da parameters ile geçmeniz gerekmektedir. Örnek:

parameters["type"] = "scratch_to_win"

parameters.put("type", "scratch_to_win");

Hediye Yağmuru (Gift Rain)

...

Code Block
languagejava
HashMap<String, String> parameters = new HashMap<String, String>();
RelatedDigital.customEvent(
  context,
  "Hediye Yağmuru",
  parameters,
  activity
);

Image from iOS (12) (1).mov

Ürün Durum Bilgisi

RMC panel üzerinden oluşturduğunuz ürüm durum bilgisi aksiyonunu aşağıdaki gibi tetikleyebilirsiniz.

...