Modülün Etkinleştirilmesi
Burada açıklandığı gibi etkinleştirilmelidir.
Uygulama-İçi Mesajlar
Kullanıcınıza uygulama-içi bir mesaj göstermek için öncelikle RMC panelinden bir target aksiyon tanımlamanız ve gerekli alanları doldurmanız gerekmektedir. Ardından aşağıdaki gibi bu target aksiyonu tetikleyebilir ve kullanıcınıza oluşturduğunuz formu uygulamanız aracılığıyla gösterebilirsiniz.
val parameters = HashMap<String, String>() RelatedDigital.customEvent( context = context, pageName = "Uygulama-İçi Mesaj", properties = parameters, parent = activity )
Uygulama-içi mesaj göstermek için yukarıdaki gibi customEvent metodunu çağırırken parent parametresi null olmamalıdır. parent parametresine bir Activity değeri verilmezse mesaj görünmeyecektir.
Eğer RMC panelde oluşturduğunuz forma bir kural tanımladıysanız bu kuralın da customEvent metodu içerisindeki properties parametresi aracılığıyla girilmesi gerekmektedir. Örnek:
parameters["OM.inapptype"] = "full_screen_image"
Tıklanmanın Yakalanması
Kullanıcınıza gösterilen uygulama-içi mesaj ekranında kullanıcı, yönlendirmenin olduğu öğeye tıkladığında, alınacak aksiyonu kendiniz yönetmek isterseniz aşağıdaki gibi bir callback tanımlaması yapmanız ve bu callback i setInAppButtonInterface metoduna iletmeniz gerekmektedir.
val buttonCallback: InAppButtonInterface = object : InAppButtonInterface { override fun onPress(link: String?) { //Tıklama sonrası çalıştırılacak kodu buraya yazınız. } } RelatedDigital.setInAppButtonInterface(buttonCallback) val parameters = HashMap<String, String>() RelatedDigital.customEvent( context = context, pageName = "Uygulama-İçi Mesaj", properties = parameters, parent = activity )
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ı
Uygulama-içi mesajlarda özel font kullanımı için ilk olarak projenizin res klasörü altında font dosyası oluşturunuz(yoksa).
Oluşturduğunuz klasörün içerisine istediğiniz fontları ekleyebilirsiniz.
Son olarak arayüzden uzantısız bir şekilde kullanmak istediğiniz fontun adını giriniz.
Uygulama-İçi Mesaj Tasarımları
Pop-up - Görsel, Başlık, Yazı & Buton | Mini - İkon & Yazı | Tam Ekran Görsel |
---|---|---|
|
| |
Tam Ekran Görsel ve Buton | Pop-up - Görsel, Başlık, Yazı ve Buton | Pop-up Anket |
|
|
|
Pop-up - Yazı ve Butonlu NPS | Native Alert & Action Sheet | 1-10 Puanlama NPS |
|
| |
Yıldızlı anket & ikinci pop-up | Yarım Ekran Görsel | Carousel |
|
|
|
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.
val callback: VisilabsCallback = object : VisilabsCallback { override fun success(response: VisilabsResponse?) { try { val favsResponse: FavsResponse = Gson().fromJson(response!!.rawResponse, FavsResponse::class.java) val favBrands: String = favsResponse.favoriteAttributeAction!![0].actiondata!!.favorites!!.brand!![0]!! Log.i("Favs 1.Brand", favBrands) } catch (e: Exception) { Log.e("Favori Özellik", e.message) } } override fun fail(response: VisilabsResponse?) { Log.e("Favori Özellik", response!!.error!!.message) } } RelatedDigital.getFavorites( context = applicationContext, actionId = null, actionType = Constants.FavoriteAttributeAction, visilabsCallback = callback)
Story Manager
Uygulamanızın layout unda dilediğiniz bir alana StoryRecyclerView
ı yerleştiriniz.
<com.relateddigital.relateddigital_android.inapp.story.StoryRecyclerView android:id="@+id/story_recycler_view" android:layout_width="match_parent" android:layout_height="wrap_content" />
StoryItemClickListener
tanımlayarak her bir story’e tıklandığında yapmak istediğiniz yönlendirme veya alınacak aksiyonu tanımlayınız.
Ardından StoryRecyclerView
ın setStoryAction
veya setStoryActionId
methodunu çağırarak storyItemClickListener
objesini methoda ekleyiniz.
val storyItemClickListener = object : StoryItemClickListener { override fun storyItemClicked(storyLink: String?) { //Burada storyLink değişkenini kullanarak gerekli yönlendirmeyi yapabilirsiniz } } binding.storyRecyclerView.setStoryAction( context = context, storyItemClickListener = storyItemClickListener)
veya
val storyItemClickListener = object : StoryItemClickListener { override fun storyItemClicked(storyLink: String?) { //Burada storyLink değişkenini kullanarak gerekli yönlendirmeyi yapabilirsiniz } } binding.storyRecyclerView.setStoryActionId( context = context, storyId = storyId, storyItemClickListener = storyItemClickListener)
Eğer bir şeylerin ters gitmesi ve story aksiyonun gösterilememesi durumunda layout dosyanıza eklediğiniz StoryRecyclerView
dan dolayı ekranda ilgili alanın boş kalmasına karşı önlem almak isterseniz story aksiyonunu aşağıdaki gibi setStoryActionWithRequestCallback
veya setStoryActionIdWithRequestCallback
metotlarını kullanarak tetikleyebilirsiniz.
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.setStoryActionWithRequestCallback( context = context, storyItemClickListener = storyItemClickListener storyRequestListener = storyRequestListener)
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:
VisilabsCallback callback = new VisilabsCallback() { @Override public void success(VisilabsResponse response) { try{ 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 qs = currentProductObject.getString("qs"); //Continues like this... } } catch (Exception e){ Log.e(LOG_TAG, e.getMessage(), e); } } @Override public void fail(VisilabsResponse response) { Log.e(LOG_TAG, response.getErrorMessage()); } };
Yukarıdaki gibi callback fonksiyonunu oluşturulduktan sonra istek aşağıdaki şekilde gibi atılır:
VisilabsTargetRequest targetRequest = Visilabs.CallAPI().buildTargetRequest(zoneID, "productCode"); targetRequest.executeAsync(callback);
Ayrıca, filtreleri ve ek parametreleri geçirebileceğiniz bir overload buildTargetRequest yöntemi bulunmaktadır.
List<VisilabsTargetFilter> filters = new ArrayList<VisilabsTargetFilter>(); HashMap<String,String> properties = new HashMap<String, String>(); properties.put("OM.extra", "Extra Value"); VisilabsTargetFilter f = new VisilabsTargetFilter("attr1", "0", "value"); filters.add(f); 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"); filters.add(f); try { VisilabsTargetRequest targetRequest = Visilabs.CallAPI().buildTargetRequest(zoneID, "productCode", properties, filters); targetRequest.executeAsync(callback); } catch (Exception e) { e.printStackTrace();
Recommendation tıklamalarının panele yansıması için, aşağıdaki method, tıklanan ürünün "qs" parametresiyle çağırılmalıdır.
// örnek callback fonsiyonunda her bir ürün için "qs" parametresinin nasıl elde edilebileceğini görebilirsiniz. Visilabs.CallAPI().trackRecommendationClick(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;
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;
customEvent(String pageName, HashMap<String, String> properties, Activity parent)
Çarkıfelek Yarım Görünüm | Çarkıfelek Tam Görünüm |
---|---|
|
|
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;
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.