...
Code Block | ||
---|---|---|
| ||
val storyItemClickListener = object : StoryItemClickListener { override fun storyItemClicked(storyLink: String?) { //Burada storyLink değişkenini kullanarak gerekli yönlendirmeyi yapabilirsiniz } } val storyRequestListener = object : StoryRequestListener { override fun onRequestResult(isAvailable: Boolean) { if (!isAvailable) { //Burada StoryRecyclerView ı kaldırmalısınız binding.storyRecyclerView.visibility = View.GONE } } } binding.storyRecyclerView.setStoryActionIdWithRequestCallback( context = context, storyId = storyId, storyItemClickListener = storyItemClickListener storyRequestListener = storyRequestListener) |
Recommendation
Recommendation Widget'larının Mobil Uygulamaya Yerleştirilmesi
Android mobil uygulamanızda, kişiye özel ürün önerileri göstermeniz için gerekli dokümanları bu bölümde bulabilirsiniz.
Bir VisilabsTargetRequest nesnesi oluşturun ve VisilabsTargetRequest nesnesinin executeAsync yöntemini çağırın.
ZoneID her uygulama için farklıdır, bu nedenle destek için RMC ekibi ile iletişime geçiniz. "Alternatif Ürünler" gibi öneri widgetları, ürün kodunun bir parametre olarak görülmesini gerektirir.
Talep tamamlandıktan sonra, talebin başarı ya da başarısızlık durumuna bağlı olarak callback fonksiyonu çağrılır, bu nedenle ihtiyaçlarınıza göre callback fonksiyonlarını aşağıda gösterildiği gibi kodlamanız gerekir:
...
Öneriler Aksiyonu
Öneriler aksiyonunu uygulamanızda aşağıdaki gibi tetikleyebilirsiniz.
Code Block | ||
---|---|---|
| ||
val callback: VisilabsCallback = object : VisilabsCallback { override fun @Override success(response: VisilabsResponse?) { public void success(VisilabsResponse response)try { // Burada try{gelen öneriler listesiyle ilgili aksiyonu alabilirsiniz.Örnek: JSONObjectval jsonObject = response.getJson();!!.json Stringval groupTitle = jsonObject!!.getString("title"); JSONArrayval jsonArray = jsonObject.getJSONArray("recommendations"); for (i in 0 until jsonArray.length()) for(int i = 0 ; i <{ val currentProductObject = jsonArray.lengthgetJSONObject(i) ; i++) { val currentProductTitle = currentProductObject.getString("title") JSONObjectval currentProductObjectcurrentProductPrice = jsonArraycurrentProductObject.getJSONObjectgetDouble(i);"price") val currentProductFreeShipping = currentProductObject.getBoolean("freeshipping") Stringval currentProductTitleqs = currentProductObject.getString("title");qs") //Continues like this... } } catch (e: Exception) { Double currentProductPrice = currentProductObjectLog.getDoublee("priceÖneriler", e.message); } } override fun fail(response: VisilabsResponse?) { boolean currentProductFreeShipping = currentProductObjectLog.getBooleane("freeshipping");Öneriler", response!!.error!!.message) } } RelatedDigital.getRecommendations( context = context, zoneId = "zoneIdDeğeri", String qsproductCode = currentProductObject.getString("qs"); ÜrünKoduDeğeri", visilabsCallback = callback) |
Ayrıca, filtreleri ve ek parametreleri de getRecommendations
metodu aracılığıyla kullanabilirsiniz.
Code Block | ||
---|---|---|
| ||
val callback: VisilabsCallback = object : VisilabsCallback { override fun success(response: VisilabsResponse?) { try { //Continues like this... Burada gelen öneriler listesiyle ilgili aksiyonu alabilirsiniz.Örnek: val jsonObject = response!!.json val groupTitle = jsonObject!!.getString("title") }val jsonArray = jsonObject.getJSONArray("recommendations") } catchfor (Exception e){ i in 0 until jsonArray.length()) { val currentProductObject = jsonArray.getJSONObject(i) val Log.e(LOG_TAG, e.getMessage(), e); currentProductTitle = currentProductObject.getString("title") val currentProductPrice = currentProductObject.getDouble("price") val currentProductFreeShipping = currentProductObject.getBoolean("freeshipping") val qs = currentProductObject.getString("qs") } //Continues like this... } @Override} public} voidcatch fail(VisilabsResponsee: responseException) { Log.e(LOG_TAG"Öneriler", responsee.getErrorMessage()message); } }; |
Yukarıdaki gibi callback fonksiyonunu oluşturulduktan sonra istek aşağıdaki şekilde gibi atılır:
Code Block |
---|
VisilabsTargetRequest targetRequest = Visilabs.CallAPI().buildTargetRequest(zoneID, "productCode");
targetRequest.executeAsync(callback); |
...
Code Block |
---|
List<VisilabsTargetFilter> filters = new ArrayList<VisilabsTargetFilter>(); HashMap<String,String> properties = new } override fun fail(response: VisilabsResponse?) { Log.e("Öneriler", response!!.error!!.message) } } val filters = ArrayList<VisilabsTargetFilter>() val parameters = HashMap<String, String>(); properties.put( parameters["OM.extra",] = "Extra Value"); VisilabsTargetFilterval ff1 = new VisilabsTargetFilter("attr1", "0", "valuevalue1"); filters.add(ff1); f.setAttribute("attr2"); f.setFilterType("1"); // There are 2 filter types: Include and Exclude. For Include pass "0", for Exclude pass "1". f.setValue("value"); val f2 = VisilabsTargetFilter("attr2", "1", "value2") filters.add(ff2); RelatedDigital.getRecommendations( try { context = context, VisilabsTargetRequest targetRequestzoneId = Visilabs.CallAPI().buildTargetRequest(zoneID, "productCode", properties, filters);"zoneIdDeğeri", productCode = "ÜrünKoduDeğeri", visilabsCallback = targetRequest.executeAsync(callback);, } catch (Exceptionproperties e)= {parameters, filters = e.printStackTrace(); |
...
filters) |
Öneriler özelliğinin tıklamalarının panele yansıması için, aşağıdaki methodmetot, tıklanan ürünün "qs" parametresiyle değeri ile çağırılmalıdır.
Code Blockinfo |
---|
// örnek callback fonsiyonunda her bir ürün içincallback metodunda herbir ürün için "qs" parametresinin nasıl elde edilebileceğini görebilirsiniz. Visilabs.CallAPI() |
Code Block | ||
---|---|---|
| ||
RelatedDigital.trackRecommendationClick(qs); |
...
context = context,
qs = qs) |
Mail Üyelik Formu
RMC panelden in-app message’da olduğu gibi mail üyelik formunu oluşturduktan sonra her customEvent çağırdığınız zaman mail üyelik formu olup olmadığı kontrol edilir ardından mail üyelik formu gösterilir. customEvent parametresinde Activity’i alan overloadı çağırmanız gerekmektedir. Örnek kod ve görsel;
Code Block |
---|
customEvent(String pageName, HashMap<String, String> properties, Activity parent) |
...
Çarkıfelek
RMC panelden in-app message’da olduğu gibi çarkıfelek oluşturduktan sonra her customEvent çağırdığınız zaman çarkıfelek olup olmadığı kontrol edilir ardından çarkıfelek gösterilir. customEvent parametresinde Activity’i alan overloadı çağırmanız gerekmektedir. Örnek kod ve görsel;
...
panel üzerinden oluşturduğunuz mail üyelik formu aksiyonunu aşağıdaki gibi tetikleyebilirsiniz.
Code Block | ||
---|---|---|
| ||
val parameters = HashMap<String, String>()
RelatedDigital.customEvent(
context = context,
pageName = "Mail Üyelik",
properties = parameters,
parent = 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” |
Çarkıfelek
RMC panel üzerinden oluşturduğunuz çarkıfelek aksiyonunu aşağıdaki gibi tetikleyebilirsiniz.
Code Block | ||
---|---|---|
| ||
val parameters = HashMap<String, String>()
RelatedDigital.customEvent(
context = context,
pageName = "Çarkıfelek",
properties = parameters,
parent = 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” |
Kazı Kazan
RMC panelden in-app message’da olduğu gibi Kazı Kazan oluşturduktan sonra her customEvent çağırdığınız zaman Kazı Kazan olup olmadığı kontrol edilir ardından Kazı Kazan gösterilir. customEvent parametresinde Activity’i alan overloadı çağırmanız gerekmektedir. Örnek kod ve görsel;
Code Block |
---|
customEvent(String pageName, HashMap<String, String> properties, Activity parent) |
...
Ürün Durum Bilgisi
RMC Panelde tanımladığınız Ürün Durum Bilgisi aksiyonu Ürün Görüntüleme, Sepete Ekleme ve Favoriye Ekleme/Çıkarma eventlerinde çalışmaktadır. Bu eventlerde ürün idnin gönderildiğinden emin olmalısınız. Bu eventlerde çağırdığınız customEvent metodunun Activity overloadını alması gerekmektedir.
...
panel üzerinden oluşturduğunuz kazı-kazan aksiyonunu aşağıdaki gibi tetikleyebilirsiniz.
Code Block | ||
---|---|---|
| ||
val parameters = HashMap<String, String>()
RelatedDigital.customEvent(
context = context,
pageName = "Kazı Kazan",
properties = parameters,
parent = 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” |
Ürün Durum Bilgisi
RMC panel üzerinden oluşturduğunuz ürüm durum bilgisi aksiyonunu aşağıdaki gibi tetikleyebilirsiniz.
Code Block | ||
---|---|---|
| ||
val parameters = HashMap<String, String>()
RelatedDigital.customEvent(
context = context,
pageName = "Ürün Durum Bilgisi",
properties = parameters,
parent = 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”] = “product_stat_notifier” |