...
Burada açıklandığı gibi etkinleştirilmelidir.
...
Uygulama-
...
Uygulama içi mesajlar (in-app messages), mobil uygulamanızda doğrudan etkin oldukları zaman kullanıcılarınıza giden bildirimlerdir. Birkaç farklı isimle adlandırılabilirler: uygulama içi mesajlar, uygulama içi bildirimler ve uygulama içi mesajlaşma. Bunlar, push bildirimler, e-posta ve SMS gibi diğer mesajlaşma türlerini içeren genel bir mobil mesajlaşma stratejisinin hayati bir bileşenidir.
Uygulama içi iletileri göstermek ve RMC nesnesini başlatmak için aşağıdaki yöntemi kullanın:
Code Block |
---|
Visilabs.CreateAPI("OrganizasyonID", "SiteID", "http://lgr.visilabs.net", "DataSource", "http://rt.visilabs.net" , "Android" , getApplicationContext(), "http://s.visilabs.net/json", "http://s.visilabs.net/actjson", requestTimeout); |
...
Code Block |
---|
HashMap<String,String> parameters = new HashMap<String, String>();
parameters.put("OM.exVisitorID", "test@euromsg.com");
parameters.put("OM.sys.AppID", "visilabs-login"); //
Visilabs.CallAPI().customEvent("android-visilabs", parameters, getActivity()); |
InApp’lerde bulunan deeplinklerin callback edilmesi:
Bu özelliği kullanabilmek için yapmanız gereken customEvent() methoduyla InApp’i çağırmadan önce aşağıdaki gibi callback methodunu set etmelisiniz:
Code Block |
---|
InAppButtonInterface buttonCallback = new InAppButtonInterface() {
@Override
public void onPress(String link) {
//Write your code here for the button click
}
};
Visilabs.CallAPI().setInAppButtonInterface(buttonCallback); |
Ardından customEvent() metodunu çağırabilirsiniz.
InApp’lerde Custom Font kullanımı
...
İç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.
Code Block | ||
---|---|---|
| ||
val parameters = HashMap<String, String>()
RelatedDigital.customEvent(
context = context,
pageName = "Uygulama-İçi Mesaj",
properties = parameters,
parent = activity
) |
Info |
---|
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. |
Info |
---|
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:
|
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.
Code Block | ||
---|---|---|
| ||
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
) |
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 |
Ö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ı giringiriniz.
...
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.
Code Block | |
---|---|
Code Block | |
| |
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//requestAction() or requestActionId()
try {
VisilabsActionRequest visilabsActionRequest = Visilabs.CallAPI().requestAction(VisilabsConstant.FavoriteAttributeAction);
visilabsActionRequest.executeAsyncAction(getVisilabsCallback());
} catch (Exception e) {
e.printStackTrace();
}
} |
Not: getVisilabsCallback() metodu için aşağıdaki iki kod bloğundan birisini kullanabilirsiniz.
| |
val callback: VisilabsCallback = object : VisilabsCallback { override return new VisilabsCallback() { @Override public void success(VisilabsResponse responsefun success(response: VisilabsResponse?) { try { val FavsResponse favsResponse = newfavsResponse: FavsResponse = Gson().fromJson(response!!.getRawResponse()rawResponse, FavsResponse::class.classjava); val favBrands: String favBrands = favsResponse.getFavoriteAttributeAction()favoriteAttributeAction!![0].getActiondata().getFavorites().getBrand()[0]; actiondata!!.favorites!!.brand!![0]!! Log.i("Favs 1.Brand", favBrands); } catch (e: Exception ex) { Log.e("ErrorFavori Özellik", ex.getMessage(), ex); e.message) } } @Override public voidoverride fun fail(response: VisilabsResponse response?) { Log.de("ErrorFavori Özellik", response.getRawResponse()); !!.error!!.message) } }; } |
veya
Code Block |
---|
private VisilabsFavsRequestCallback getVisilabsCallback() {
return new VisilabsFavsRequestCallback() {
@Override
public void success(FavsResponse message, String url) {
Log.i(LOG_TAG, "Success Request : " + url);
//Do your work here by using message, e.g.
/*
List<FavoriteAttributeAction> favsActions = message.getFavoriteAttributeAction();
for (int i = 0; i < favsActions.size() ; i++) {
String actionType = favsActions.get(i).getActiontype();
Log.i(LOG_TAG, "action type " + i+1 + " : " + actionType);
Actiondata actionData = favsActions.get(i).getActiondata();
for (int j = 0; j < favsActions.size() ; j++) {
String[] attributes = actionData.getAttributes();
Favorites favorites = actionData.getFavorites();
//goes on...
}
}
*/
}
@Override
public void fail(Throwable t, String url) {
Log.e(LOG_TAG, "Fail Request : " + url);
Log.e(LOG_TAG, "Fail Request Message : " + t.getMessage());
}
};
} |
Story Manager
Story Banner ve Story Aksiyonu
Her iki aksiyon içinde implementasyonu için aşağıdaki VisilabsRecyclerView
‘i layout’ta istediğiniz bölüme yerleştirin.
Code Block |
---|
<com.visilabs.story.VisilabsRecyclerView
android:id="@+id/vrv_story"
android:layout_width="match_parent"
android:layout_height="wrap_content"/> |
VisilabsRecyclerView
'i classınızda tanımladıktan sonra StoryItemClickListener
tanımlayarak her bir story’e tıklandığında yapmak istediğiniz yönlendirme ve ya aksiyonu tanımlayınız. Burada örnek olması için Toast Mesajı gösterilmiştir.
Ardından VisilabsRecyclerView
'in setStoryAction
methodunu çağrarak storyItemClickListener
objesini methoda ekleyiniz.
Code Block |
---|
VisilabsRecyclerView visilabsRecyclerView = findViewById(R.id.vrv_story); StoryItemClickListener storyItemClickListener = new StoryItemClickListener() { @Override public void storyItemClicked(String storyLink 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.
Code Block | ||
---|---|---|
| ||
<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.
Code Block | ||
---|---|---|
| ||
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
Code Block | ||
---|---|---|
| ||
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.
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.setStoryActionWithRequestCallback(
context = context,
storyItemClickListener = storyItemClickListener
storyRequestListener = storyRequestListener) |
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 |
...
İsterseniz Story Aksiyon Id ile de setleyebilirsiniz.
Code Block |
---|
visilabsRecyclerView.setStoryActionId(getApplicationContext(), "250", storyItemClickListener);
|
Panelde aktif story looking banner veya story olduğu sürece uygulamanızda gözükecektir.
storyRequestListener = storyRequestListener) |
Recommendation
Recommendation Widget'larının Mobil Uygulamaya Yerleştirilmesi
...