Versions Compared

Key

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

...

Code Block
languagejava
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-visilabvisilabs", parameters, getActivity());

...

Ardından customEvent() metodunu çağırabilirsiniz.

InApp’lerde Custom Font kullanımı

  1. InApp’lerde custom font kullanımı için ilk olarak res klasörü altında font folder'ı oluşturun.

    Image Added

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

    Image Added

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

    Image Added


9 12 farklı In-App Message tasarımı mevcut:

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

Image Removed

InApp İçeren Örnek Uygulama

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.

...

languagejava

...

Yarım Ekran Görsel

Carousel

Image Added

Image Added

Image Added

Video In-App

Image Added

1-10 Puanlama NPS - Inline

InlineNpsWithNumbersView'ı projenizde tercih ettiğiniz bir layout dosyasına eklemelisiniz.
Örnek kullanım:

Code Block
?xml version="1.0" encoding="utf-8"?>
<
LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
   android:layout_width="match_parent"
   android:layout_height="match_parent"
   xmlns:app="http://schemas.android.com/apk/res-auto">
   <com.visilabs.inApp.inlineNpsWithNumber.InlineNpsWithNumbersView
       android:id="@+id/inlineNps"
       android:layout_width="match_parent"
        e.printStackTrace();android:layout_height="wrap_content"
     }  />
</
LinearLayout
}

Not: getVisilabsCallback() metodu için aşağıdaki iki kod bloğundan birisini kullanabilirsiniz.

Code Block
languagejava
public VisilabsCallback getVisilabsCallback() {

    return new VisilabsCallback() {
        @Override
        public void success(VisilabsResponse response) {
            try {

                FavsResponse favsResponse = new Gson().fromJson(response.getRawResponse(), FavsResponse.class);

                String favBrands = favsResponse.getFavoriteAttributeAction()[0].getActiondata().getFavorites().getBrand()[0];
                Log.i("Favs 1.Brand", favBrands);

  >

InlineNpsWithNumbersView 'i ekledikten sonra ilgili koddaki (Java veya Kotlin) nesneye erişmeli ve bu nesne üzerinde setNpsWithNumberAction() yöntemini çağırmalısınız. Bu yöntem 1 zorunlu (Bağlam bağlamı) ve 3 isteğe bağlı parametreye (HashMap<String, String> özellikleri, NpsItemClickListener npsItemClickListener, Activity) sahiptir.

Özellikler, isteğe bağlı olan parametreler, istediğiniz sorgu parametrelerini eklemeniz içindir.
nps ItemClickListener, kullanıcı bir banner’a tıkladığında kontrolü elde etmek içindir. Sdk'nın kullanıcıyı otomatik olarak bağlantıya yönlendirmesini istemiyorsanız, bu arayüzü kullanabilirsiniz.

InApp İçeren Örnek Uygulama

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
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);


//requestAction() or requestActionId()
  try {
        VisilabsActionRequest }visilabsActionRequest catch= (Exception ex) {Visilabs.CallAPI().requestAction(VisilabsConstant.FavoriteAttributeAction);
                Log.e("Error", ex.getMessage(), ex);
       visilabsActionRequest.executeAsyncAction(getVisilabsCallback());
    } catch (Exception e) {
    }    e.printStackTrace();
    }
@Override         public void fail(VisilabsResponse response}

Not: getVisilabsCallback() metodu için aşağıdaki iki kod bloğundan birisini kullanabilirsiniz.

Code Block
languagejava
private VisilabsActionsCallback getVisilabsCallback() {
    return new VisilabsActionsCallback() {

   Log.d("Error", response.getRawResponse());    @Override
    }    public };
}

veya

Code Block
languagejava
private VisilabsFavsRequestCallback getVisilabsCallback(void success(VisilabsActionsResponse message, String url) {
    return new VisilabsFavsRequestCallback() {   List<FavoriteAttributeAction> favoriteAttributeActions = message.getFavoriteAttributeAction();
  @Override        String[] publicbrands void= success(FavsResponse message, String url) {favoriteAttributeActions.get(0).getActiondata().getFavorites().getBrand();
          //Continues like  Log.i(LOG_TAG, "Success Request : " + url);this...
        }

        //Do@Override
your work here by using message, e.g.  public void fail(Throwable t, String url) {
    /*        Log.e("Error", t.getMessage());
   List<FavoriteAttributeAction> favsActions = message.getFavoriteAttributeAction();  }
    };
}

veya

Code Block
languagejava
private VisilabsFavsRequestCallback getVisilabsCallback() {
 for (int i =return 0; i < favsActions.size() ; i++new VisilabsFavsRequestCallback() {
        @Override
       String actionTypepublic =void favsActions.get(i).getActiontype();
   success(FavsResponse message, String url) {
            Log.i(LOG_TAG, "actionSuccess Request type: " + i+1 + " : " + actionType);url);
            //Do your work here by using message, e.g.
   Actiondata  actionData = favsActions.get(i).getActiondata();     /*
           for (intList<FavoriteAttributeAction> jfavsActions = 0message.getFavoriteAttributeAction();
j  < favsActions          for (int i = 0; i < favsActions.size() ; ji++) {
  
                 String[] attributesactionType = actionData.getAttributesfavsActions.get(i).getActiontype();
                Log.i(LOG_TAG, "action type  Favorites favorites = actionData.getFavorites(" + i+1 + " : " + actionType);
                Actiondata  actionData = //goes on...favsActions.get(i).getActiondata();
                }for (int j = 0; j < favsActions.size() ; j++) {
  }             */     String[] attributes = actionData.getAttributes();
}         @Override         public void fail(Throwable t, String url) {Favorites favorites = actionData.getFavorites();
             Log.e(LOG_TAG, "Fail Request : " + url);
 //goes on...
             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
languagexml

        @Override
 <com.visilabs.story.VisilabsRecyclerView       public  android:id="@+id/vrv_story"void fail(Throwable t, String url) {
            android:layout_width="match_parent"Log.e(LOG_TAG, "Fail Request : " + url);
        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 setStoryActionmethodunu çağrarak storyItemClickListenerobjesini methoda ekleyiniz.

Code Block
languagejava
    VisilabsRecyclerView visilabsRecyclerView = findViewById(R.id.vrv_story    Log.e(LOG_TAG, "Fail Request Message : " + t.getMessage());
        StoryItemClickListener}
storyItemClickListener = new StoryItemClickListener() {
            @Override
            public void storyItemClicked(String storyLink) {
                Toast.makeText(getApplicationContext(), storyLink, Toast.LENGTH_LONG).show();
            }
        };

       visilabsRecyclerView.setStoryAction(getApplicationContext(), storyItemClickListener);

 

İsterseniz Story Aksiyon Id ile de setleyebilirsiniz.

Code Block
languagejava
      visilabsRecyclerView.setStoryActionId(getApplicationContext(), "250", storyItemClickListener);

Panelde aktif story looking banner veya story olduğu sürece uygulamanızda gözükecektir.

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.

Callback fonksiyonunun spesifikasyonu şöyledir:

Code Block
languagejava
VisilabsTargetRequest targetRequest = Visilabs.CallAPI().buildTargetRequest(zoneID, "productCode");
targetRequest.executeAsync(callback);

...

Code Block
languagejava
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();

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:

Code Block
languagejava
VisilabsCallback callback = new VisilabsCallback() {
    @Override
    public void success(VisilabsResponse response) {
        try{
            JSONArray array = response.getArray();
        }catch (Exception ex){
            Log.e(LOG_TAG, ex.getMessage(), ex);
        }
    }
    @Override
    public void fail(VisilabsResponse response) {
        Log.e(LOG_TAG, response.getErrorMessage());
    }
};

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
languagejava
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;

Code Block
languagejava
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

...

};
}

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
languagejava
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;

Code Block
languagejava
customEvent(String pageName, HashMap<String, String> properties, Activity parent)

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

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

Image Added

Image Added

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
languagejava
customEvent(String pageName, HashMap<String, String> properties, Activity parent)

...

App Banner

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

Code Block
languagexml
<?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.visilabs.inApp.bannercarousel.BannerRecyclerView
      android:id="@+id/bannerListView"
      android:layout_width="match_parent"
      android:layout_height="150dp"/>

  <Button
      android:id="@+id/btn_show_banner"
      android:layout_gravity="center"
      android:layout_width="150dp"
      android:layout_height="50dp"
      android:layout_marginTop="20dp"
      android:background="@drawable/rounded_corners_background"
      android: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.

Code Block
languagejava
bannerItemClickListener = new BannerItemClickListener() {
            @Override
            public void bannerItemClicked(String bannerLink) {
                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.setVisibility(View.GONE);
                }
            }
        };

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

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

Ü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.

...

Kulakçık

RMC panelden Kulakçık aksiyonu oluşturduktan sonra her customEvent çağırdığınız zaman Kulakçık olup olmadığı kontrol edilir ardından Kulakçık gösterilir. customEvent parametresinde Activity’i alan methodu çağırmanız gerekmektedir. Örnek kod ve görsel;

Code Block
languagejava
customEvent(String pageName, HashMap<String, String> properties, Activity parent)

...

Image AddedImage Added