KURULUM

İçindekiler


Önsöz


WebInStats sisteminin uygulamalarınızda ve web sitenizde çalışması için bu sayfadaki adımları takip etmeniz gereklidir. Yapılacak işlemler Android, iOs ve Web için ayrı tablarda belirtilmiştir.

Admin panelde kayıt açılması


Eğer WebInStats hesabınız yok ise öncelikle Admin Panel üzerinden kayıt oluşturmalısınız. Bunun için lütfen buraya tıklayınız. Kayıt oluşturduktan sonra e-posta adresinize gelen aktivasyon linkini tıklamalısınız. Daha sonra Create New Company sayfasında New butonuna tıklayarak yeni firma oluşturmalısınız. Yeni firma oluştururken aşağıdaki bilgileri girmelisiniz.

  • Name : Bu alana firma adı girilmelidir. Örneğin www.example.com domaini sisteme girilecek ise bu alana “Example.com” ya da “Example” girebilirsiniz.
  • Sub Domain : WebInStats üzerinde clicklerinizin ve linkleriniz takibi için bir subdomain oluşturulmaktadır. Bu alana sadece ingilizce harf ya da rakam girilmelidir. Örneğin www.example.com domaini için kayıt oluşturulacak ise bu alana example girebilirsiniz.  Bu sayede domaininize ait istekler example.webinstats.com üzerinden toplanacaktır.
  • Web Site : Bu alana websitenizin URL bilgisi girilmelidir. Örneğin www.example.com için http://www.example.com girilmelidir.
  • Time Zone : Bulunduğunuz bölgenin Time Zone bilgisini buradan seçebilirsiniz. Örneğin Türkiye için Europe/Istanbul, Londra için Europe/London seçmelisiniz. Bu alan düzgün seçilmez ise raporlamalarda düzgün veri alamayabilirsiniz.
  • Character Set : Web Sitenizin karakter seti bu alana tanımlanmalıdır. Bu alanın değeri büyük ölçüde utf-8 dir. Ancak eski bir web siteniz var ise Web masterınızdan bu bilgiyi öğrenerek değeri girmelisiniz. Eğer siteniz ISO-8859-9 karakter setinde ise ve siz bu alandan UTF-8 tanımladıysanız Bannerlarda Türkçe lokal karakterlerde sıkıntı yaşabilirsiniz.

Bu alanları doldurduktan sonra Save (Kaydet) butonuna tıkladığınızda yeni kaydınız oluşacaktır.

WebInStats SDKnın indirilmesi ve siteye / uygulamaya eklenmesi


Firmanızı oluşturduktan sonra Sol menüde Select Application kısmında az önce tanımladığınız firmanın (example.com) seçili olduğundan emin olun.  Aynı bölümde firma isminizin hemen altında Admin Panel’i seçin.

SDK ve örnek kodların indirilmesi


WebInStats kurulumu için öncelikle ilgili SDK ya da script kodunun indirilmesi gerekmektedir. Aşağıda ilgili platform için kodların nasıl indirileceğini görebilirsiniz :

Web
Android
iOS
Web

Admin Panelde Sol Menü -> General Settings -> Generate Code ekranına gelin. Burada ilgili uygulama ya da web sitesi için gerekli kodu kopyalayın. Daha sonra aşağıdaki adımları uygulayın.

Android

Android SDK sı Android v4.2 (API 17) ve üstünde çalışır.

Manuel olarak eklemek için :

Aşağıdaki linkten Android SDK dosyasını indirilebilirsiniz :

https://github.com/WebInStats/Android-SDK

Örnek demo uygulaması için :

https://github.com/WebInStats/Android-Demo

iOS

iOS SDK sı iOS v8.0 ve üstünde çalışır.

SDK’yı Cocoapods ile ya da Manuel olarak projenize ekleyebilirsiniz.

1. Cocoapods ile eklemek için :

a.Cocoapods’u yükleyin.


       sudo gem install cocoapods

b.Eğer proje dosyanızın içinde PodFile dosyanız yok ise yeni bir tane oluşturun


       pod init

c.PodFile dosyanıza aşağıdaki satırı ekleyin


       pod 'iOS_wis'

d. Son olarak aşağıdaki satırı projenizin bulunduğu klasörde çalıştırarak Webinstats SDK’nızı projenize eklemeyi tamalayın.


       pod install

2. Manuel olarak eklemek için :

Aşağıdaki linkten iOS SDK dosyasını indirilebilirsiniz :

https://github.com/WebInStats/iOS-SDK

Örnek demo uygulaması için :

https://github.com/WebInStats/iOS-Demo

iOS SDK’sı Manuel olarak eklendiyse :

iTunes Connect’e bir iOS uygulaması gönderirken Webinstats framework’ü dahil uygulamanızın kullandığı tüm frameworklerin simülatörle uyumlu (x86) sürümünü kaldırmanız gerekiyor.
Simülatör işlemcilerini uygulamanızdan hariç bırakmak için aşağıdaki adımları izlemelisiniz.

Screen Shot 2019-12-05 at 16.25.41

a. Proje pencerenizden App Store’a göndermek istediğiniz target’ı seçiniz ve Build Phase Tabını açınız
b. Sol üstte bulunan “+” simgesine tıklayarak mebde framework adımından sonraki kısıma yeni bir run script ekleyin
c. Run Script’in içerisinde , Shell’in /bin/sh olduğundan emin olun ve aşağıdaki kodu ekleyin


APP_PATH="${TARGET_BUILD_DIR}/${WRAPPER_NAME}"
# This script loops through the frameworks embedded in the application and
# removes unused architectures.
find "$APP_PATH" -name '*.framework' -type d | while read -r FRAMEWORK

do
FRAMEWORK_EXECUTABLE_NAME=$(defaults read "$FRAMEWORK/Info.plist" CFBundleExecutable)
FRAMEWORK_EXECUTABLE_PATH="$FRAMEWORK/$FRAMEWORK_EXECUTABLE_NAME"

echo "Executable is $FRAMEWORK_EXECUTABLE_PATH"
EXTRACTED_ARCHS=()

echo "ARCHS = $ARCHS"

INFO_OUTPUT_STR=`lipo -info "$FRAMEWORK_EXECUTABLE_PATH"`
if [[ $INFO_OUTPUT_STR == *"Non-fat file"* ]]
then
echo "Framework is not a Fat binary, skipping..."
continue
fi

for ARCH in $ARCHS
do
echo "Extracting $ARCH from $FRAMEWORK_EXECUTABLE_NAME"
lipo -extract "$ARCH" "$FRAMEWORK_EXECUTABLE_PATH" -o "$FRAMEWORK_EXECUTABLE_PATH-$ARCH"
EXTRACTED_ARCHS+=("$FRAMEWORK_EXECUTABLE_PATH-$ARCH")
done

echo "Merging extracted architectures: ${ARCHS}"
lipo -o "$FRAMEWORK_EXECUTABLE_PATH-merged" -create "${EXTRACTED_ARCHS[@]}"
rm "${EXTRACTED_ARCHS[@]}"

echo "Replacing original executable with thinned version"
rm "$FRAMEWORK_EXECUTABLE_PATH"
mv "$FRAMEWORK_EXECUTABLE_PATH-merged" "$FRAMEWORK_EXECUTABLE_PATH"
done

Kodların Siteye / Uygulamaya eklenmesi


Web
Android
iOS / Swift
iOS / Objective-C
Web

Please copy this code to all of the pages on your website before the </body> tag. (Also you can add the code to the Tag Manager)


<script>
window.wiso = window.wiso || [];
window.wiso.push(
 {s:"__YOUR_COMPANY_ID___"},
 {_cburl:"//__YOUR_SUBDOMAIN__.webinstats.com/"},
 {p:"__THE_PAGENAME_USER_CURRENTLY_VISIT__"},
 {cuid:"__CUSTOMER_ID__"}, // LEAVE THIS EMPTY IF USER IS NOT LOGGEDIN
// TWO PARAMETERS BELOW SHOULD BE ON THE PURCHASE PAGE 
 {trid:"__UNIQUE_TRANSACTION_ID__"}, // LEAVE THIS EMPTY IF IT'S NOT PURCHASE PAGE
 {am:"__TRANSACTION_AMOUNT__"} // LEAVE THIS EMPTY IF IT'S NOT PURCHASE PAGE
);
(function() {var _wis = document.createElement('script');_wis.type = 'text/javascript';_wis.async = true; 
_wis.src='//dbfukofby5ycr.cloudfront.net/a9/js/dlc1.52.js';var s = document.getElementsByTagName('script')[0]; 
s.parentNode.insertBefore(_wis, s); })();
</script>
Android

Add the line below to AndroidManifest.xml file :


<uses-permission android:name="android.permission.INTERNET"></uses-permission>

Complete the following steps in each activity of your application:


import webinstats.android_wis.Webinstats;

// define wiso object as a global object :
Webinstats wiso = new Webinstats("//__YOUR_SUBDOMAIN__.webinstats.com/","__YOUR_COMPANY_ID___","0");
// If you use activity, you must call execute method on onCreate() method in each activity

// If you use fragment activity, you must call execute method on onCreateView() method in each fragment
Map<String,String> map=new HashMap<>();
map.put("p","__THE_PAGENAME_USER_CURRENTLY_VISIT__");
map.put("cuid","__CUSTOMER_ID__"); // LEAVE THIS EMPTY IF USER IS NOT LOGGEDIN
// TWO PARAMETERS BELOW SHOULD BE ON THE PURCHASE PAGE 
map.put("trid","__UNIQUE_TRANSACTION_ID__"); // LEAVE THIS EMPTY IF IT'S NOT PURCHASE PAGE
map.put("am","__TRANSACTION_AMOUNT__"); // LEAVE THIS EMPTY IF IT'S NOT PURCHASE PAGE

// For each activity => call execute function on onCreate() method 
wiso.execute(this,map);
// For each fragment activity => call execute function on onCreateView() method F.I. :  
wiso.execute(getActivity(),map);

Add the code below to each activities onDestroy method or each Fragment onDestroyView method:


// For each activity => call execute function on onDestroy() method 
wiso.onChangeState(this);
// For each fragment activity => call execute function on onDestroyView() method F.I. :  
wiso.onChangeState(getActivity());

// Your app is targeting API level 28 (Android 9.0) or above, you must include the following declaration within the element of AndroidManifest.xml.


<uses-library
      android:name="org.apache.http.legacy"
      android:required="false" />
iOS / Swift

Paste the code below for each viewcontroller on your app


// To access methods from SDK in your Swift file add the following line to the begining of the class.
import iOS_wis
// Add the code below for each viewDidLoad() method on viewcontroller

let wiso = Webinstats("//__YOUR_SUBDOMAIN__.webinstats.com/","___YOUR_COMPANY_ID___","0")
var map = [String:String]()
map["p"] = "__THE_PAGENAME_USER_CURRENTLY_VISIT__"
map["cuid"] = "__CUSTOMER_ID__" // LEAVE THIS EMPTY IF USER IS NOT LOGGEDIN
// TWO PARAMETERS BELOW SHOULD BE ON THE PURCHASE PAGE 
map["trid"] = "__UNIQUE_TRANSACTION_ID__" // LEAVE THIS EMPTY IF IT'S NOT PURCHASE PAGE
map["am"] = "__TRANSACTION_AMOUNT__" // LEAVE THIS EMPTY IF IT'S NOT PURCHASE PAGE
wiso.execute(view: self, localmap: map)

WebInStats SDK removes all of the banners on the page automatically on pageload. However if you need to cleanup all webinstats banners and events manually you can call the function below


wiso.onChangeState()
iOS / Objective-C


// To access methods from SDK in your Objective-C file add the following line to the begining of the class.
@import iOS_wis;
// Add the code below for each -(void)viewDidLoad method on viewcontroller
Webinstats* wiso = [[Webinstats alloc] init:@"//__YOUR_SUBDOMAIN__.webinstats.com/" :@"___YOUR_COMPANY_ID___" :@"0"];
NSMutableDictionary *map = [[NSMutableDictionary alloc] init];
[map setObject:@"__THE_PAGENAME_USER_CURRENTLY_VISIT__" forKey:@"p"];
[map setObject:@"__CUSTOMER_ID__" forKey:@"cuid"]; // LEAVE THIS EMPTY IF USER IS NOT LOGGEDIN
// TWO PARAMETERS BELOW SHOULD BE ON THE PURCHASE PAGE
[map setObject:@"__UNIQUE_TRANSACTION_ID__" forKey:@"trid"]; // LEAVE THIS EMPTY IF IT'S NOT PURCHASE PAGE
[map setObject:@"__TRANSACTION_AMOUNT__" forKey:@"am"]; // LEAVE THIS EMPTY IF IT'S NOT PURCHASE PAGE
[wiso executeWithView:self localmap:map];

WebInStats SDK removes all of the banners on the page automatically on pageload. However if you need to cleanup all webinstats banners and events manually you can call the function below


[wiso onChangeState];

Push Notification Ürününün siteye / uygulamalara eklenmesi


WebInStats-PushStats ürününün uygulamalarınızda ve web sitenizde çalışması için bu sayfadaki adımları takip etmeniz gereklidir. Yapılacak işlemler Android, iOS ve Web için ayrı tablarda belirtilmiştir.

Web
Android
iOS / Swift
iOS / Objective-C
Web

Download manifest.json and sw.js files from webinstats panel.

Screen Shot 2018-12-31 at 12.52.37

Screen Shot 2018-12-31 at 12.52.48

Add those files under your domain-root folder.
e.g :

manifest : https://webinstats.com/manifest.json,
service worker : https://webinstats.com/sw.js

Android

Add your FCM application’s configuration file and HMS configuration file below the app section :

config

Add the line below to AndroidManifest.xml file between application tags :


        <!-- Add your notification icon's source file to AndroidManifest.xml -->
        <!-- before 5.0 API 21 @drawable/file_name -->
           <meta-data
            android:name="push_notification_icon_old"
            android:resource="__icon_source_file"/>
        <!-- 5.0 API 21+ @drawable/file_name -->
           <meta-data
            android:name="push_notification_icon"
            android:resource="@__icon_source_file"/ >
        <!-- 8.0 API 26+ -->
        <meta-data
            android:name="com.google.firebase.messaging.default_notification_channel_id"
            android:value="default_notification_channel_id"/>

      <service
      android:name="webinstats.android_wis.WebinstatsMessagingService">
            <intent-filter>
                <action android:name="com.google.firebase.MESSAGING_EVENT"/>
            </intent-filter>
        </service>
      <service
      android:name="webinstats.android_wis.WisHMSMessagingService"
      android:exported="false">
            <intent-filter>
                <action android:name="com.huawei.push.action.MESSAGING_EVENT"/>
            </intent-filter>
        </service>

Complete the following steps in each activity of your application:


import webinstats.android_wis.Webinstats;

// define wiso object as a global object :
Webinstats wiso = new Webinstats("//__YOUR_SUBDOMAIN__.webinstats.com/","__YOUR_COMPANY_ID___","0");
// If you use activity, you must call execute method on onCreate() method in each activity

// If you use fragment activity, you must call execute method on onCreateView() method in each fragment
Map<String,String> map=new HashMap<>();
map.put("p","__THE_PAGENAME_USER_CURRENTLY_VISIT__");
map.put("cuid","__CUSTOMER_ID__"); // LEAVE THIS EMPTY IF USER IS NOT LOGGEDIN
// TWO PARAMETERS BELOW SHOULD BE ON THE PURCHASE PAGE 
map.put("trid","__UNIQUE_TRANSACTION_ID__"); // LEAVE THIS EMPTY IF IT'S NOT PURCHASE PAGE
map.put("am","__TRANSACTION_AMOUNT__"); // LEAVE THIS EMPTY IF IT'S NOT PURCHASE PAGE

// for app push enable add line below to map
map.put("_enable_push","1");
// For each activity => call execute function on onCreate() method 
wiso.execute(this,map);
// For each fragment activity => call execute function on onCreateView() method F.I. :  
wiso.execute(getActivity(),map);

Add the code below to each activities onDestroy method or each Fragment onDestroyView method:


// For each activity => call execute function on onDestroy() method 
wiso.onChangeState(this);
// For each fragment activity => call execute function on onDestroyView() method F.I. :  
wiso.onChangeState(getActivity());
iOS / Swift

Choose your Appname.target and enable Push Notifications in Capabilities tab


// To access methods from SDK in your AppDelegate.Swift file add the following line to the beginning of the class.
import iOS_wis

Add the codes below to the related methods. If you aren’t use the methods you should add methods to AppDelegate.Swift file

At the end of your didFinishLaunchingWithOptions method, add the following line


func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
        Webinstats("//__YOUR_SUBDOMAIN__.webinstats.com/","___YOUR_COMPANY_ID___","0").register(application, didFinishLaunchingWithOptions: launchOptions)
        return true
    }

Add the following methods, in your AppDelegate.Swift



func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any], fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) {   
   Webinstats("//__YOUR_SUBDOMAIN__.webinstats.com/","___YOUR_COMPANY_ID___","0").didReceiveNotification(application, didReceiveRemoteNotification: userInfo)
    }
func application(_ application: UIApplication,
                     didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
        
        Webinstats.registerWithDeviceToken(deviceToken: deviceToken)
    }

Paste the code below for each viewcontroller on your app

// You should add Allow Arbitrary Loads = YES under App Transport Security Settings in info.plist file to use the SDK.
// To access methods from SDK in your Swift file add the following line to the begining of the class.
import iOS_wis
// Add the code below for each viewDidLoad() method on viewcontroller

let wiso = Webinstats("//__YOUR_SUBDOMAIN__.webinstats.com/","___YOUR_COMPANY_ID___","0")
var map = [String:String]()
map["p"] = "__THE_PAGENAME_USER_CURRENTLY_VISIT__"
map["cuid"] = "__CUSTOMER_ID__" // LEAVE THIS EMPTY IF USER IS NOT LOGGEDIN
// TWO PARAMETERS BELOW SHOULD BE ON THE PURCHASE PAGE 
map["trid"] = "__UNIQUE_TRANSACTION_ID__" // LEAVE THIS EMPTY IF IT'S NOT PURCHASE PAGE
map["am"] = "__TRANSACTION_AMOUNT__" // LEAVE THIS EMPTY IF IT'S NOT PURCHASE PAGE
// for app push enable add line below to map
map["_enable_push"] = "1"
wiso.execute(view: self, localmap: map)
iOS / Objective-C

Choose your Appname.target and enable Push Notifications in Capabilities tab


// To access methods from SDK in your AppDelegate.m file add the following line to the beginning of the class.
@import iOS_wis;

Add the codes below to the related methods. If you aren’t use the methods you should add methods to AppDelegate.m file

At the end of your didFinishLaunchingWithOptions method, add the following line


- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
        [[[Webinstats alloc] init:@"//__YOUR_SUBDOMAIN__.webinstats.com/" :@"___YOUR_COMPANY_ID___" :@"0"] register:application didFinishLaunchingWithOptions:launchOptions];
        return YES;
}

Add the following methods, in your AppDelegate.m



- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler {
    [[[Webinstats alloc] init:@"//__YOUR_SUBDOMAIN__.webinstats.com/" :@"___YOUR_COMPANY_ID___" :@"0"] didReceiveNotification:application didReceiveRemoteNotification:userInfo];
}

- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken{
   
    [Webinstats registerWithDeviceTokenWithDeviceToken:deviceToken];
}

- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options{
    [[[Webinstats alloc] init:@"//__YOUR_SUBDOMAIN__.webinstats.com/" :@"___YOUR_COMPANY_ID___" :@"0"] saveTestParametersWithUrl:url];
    return YES;
}

Paste the code below for each viewcontroller on your app

// You should add Allow Arbitrary Loads = YES under App Transport Security Settings in info.plist file to use the SDK.
// To access methods from SDK in your Objective-C file add the following line to the begining of the class.
@import iOS_wis;
// Add the code below for each -(void)viewDidLoad method on viewcontroller
Webinstats* wiso = [[Webinstats alloc] init:@"//__YOUR_SUBDOMAIN__.webinstats.com/" :@"___YOUR_COMPANY_ID___" :@"0"];
NSMutableDictionary *map = [[NSMutableDictionary alloc] init];
[map setObject:@"__THE_PAGENAME_USER_CURRENTLY_VISIT__" forKey:@"p"];
[map setObject:@"__CUSTOMER_ID__" forKey:@"cuid"]; // LEAVE THIS EMPTY IF USER IS NOT LOGGEDIN
// TWO PARAMETERS BELOW SHOULD BE ON THE PURCHASE PAGE
[map setObject:@"__UNIQUE_TRANSACTION_ID__" forKey:@"trid"]; // LEAVE THIS EMPTY IF IT'S NOT PURCHASE PAGE
[map setObject:@"__TRANSACTION_AMOUNT__" forKey:@"am"]; // LEAVE THIS EMPTY IF IT'S NOT PURCHASE PAGE
[map setObject:@"1" forKey:@"_enable_push"];
[wiso executeWithView:self localmap:map];

iOS 10 ve sonrası Büyük imajlı push gösterimi için yapılması gerekenler


Appte notification extension ekli değilse, ilk olarak notification extension eklemelisniz.

Adım 1 : File —> New —> Target kısmından Notification Extension seçiyoruz.

1

2

Notification extension’da bulunan didReceive metotunda Webinstats sdk’sında bulunan didReceiveNotification metodunu çağırıyoruz.

Swift
Objective-C
Swift

override func didReceive(_ request: UNNotificationRequest, withContentHandler contentHandler: @escaping (UNNotificationContent) -> Void) {
        self.contentHandler = contentHandler
        bestAttemptContent = (request.content.mutableCopy() as? UNMutableNotificationContent)
        if let bestAttemptContent = bestAttemptContent { 
            contentHandler(Webinstats("//__YOUR_SUBDOMAIN__.webinstats.com/","___YOUR_COMPANY_ID___","0").didReceiveNotificationExtension(request, bestAttemptContent))
        }
    }
Objective-C

- (void)didReceiveNotificationRequest:(UNNotificationRequest *)request withContentHandler:(void (^)(UNNotificationContent * _Nonnull))contentHandler {
    self.contentHandler = contentHandler;
    self.bestAttemptContent = [request.content mutableCopy];
    if(_bestAttemptContent){
        contentHandler([[[Webinstats alloc] init:@"//__YOUR_SUBDOMAIN__.webinstats.com/" :@"___YOUR_COMPANY_ID___" :@"0"] didReceiveNotificationExtension:request :_bestAttemptContent]);
    }
}

Embedded Libraries kısmında NotificationExtensionı ekliyoruz.
3

App Push Notifications Field Mapping

Android
iOS / Swift
iOS / Objective-C
Android

You should call this method only once



        wiso.setPayloadTitle("__Payload_Title_Field_");
        wiso.setPayloadBody("__Payload_Body_Field_");
        wiso.setPayloadImage("__Payload_Image_Field_");
        wiso.setPayloadLink("__Payload_Deeplink_Field_");
        wiso.setPayloadSound("__Payload_Sound_Field_");


iOS / Swift

You should call this method only once


            wiso.setPayloadLink(link: "__Payload_Deeplink_Field_")

If you use rich notification you must call didReceiveNotificationExtension method with payload image parameter


            contentHandler(Webinstats("//__YOUR_SUBDOMAIN__.webinstats.com/","___YOUR_COMPANY_ID___","0").didReceiveNotificationExtension(request, bestAttemptContent,"__Payload_Image_Field_"))
iOS / Objective-C

You should call this method only once


          [Webinstats setPayloadLinkWithLink:@""];

If you use rich notification you must call didReceiveNotificationExtension method with payload image parameter


           contentHandler([[[Webinstats alloc] init:@"//__YOUR_SUBDOMAIN__.webinstats.com/" :@"___YOUR_COMPANY_ID___" :@"0"] didReceiveNotificationExtension:request :_bestAttemptContent:_@"__Payload_Image_Field_"]);

Varsayılan parametrelerin özelleştirilmesi


WebInStats kurulumunda bazı parametreler varsayılan olarak tanımlı gelir ancak bu parametreleri değiştirebilir ve site ihtiyacınıza göre özelleştirebilirsiniz. Aşağıdaki listede kullanılan sistem parametrelerini görebilirsiniz.

Param Name Default Value Açıklama Sample Usage
_isexec true Sayfada wiso objesini yüklemek istiyorsak ancak belli bir işlemden sonra banner sorgusunu atmak istiyorsak bu değişkeni kullanabiliriz. Eğer true ise Sayfaya script yüklendiği anda WebInStats kodu otomatik olarak çalışır. Eğer bu değer false ise kodda uygun alanda wiso._execute(); fonksiyonu elle çağırılmalıdır. Kurulum koduna
{_isexec:false},
eklenmeli gerekli işlemler yapıldıktan sonra
wiso._execute();
komutu çağırılmalıdır.
_ucisd false Local Stroage’ın kullanılamadığı durumlarda ilgili verinin cookieye yazılıp yazılamayacağını belirtir. Kurulum koduna
{_ucisd:true},
satırı eklenmelidir.
_cd Cookie domaini bu alana girilir. Eğer bilgi girilmez ise *.domainadi.com kullanılır. Cookie domainini my.webinstats.com olarak değiştirmek için Kurulum koduna
{_cd:’my.webinstats.com’},
satırı eklenmelidir.
_req_to 6000 Milisaniye cinsinden (6000=6saniye) server isteği zaman aşımını belirtir. Eğer kullanıcının yavaş bir bağlantısı var ise 6 saniye içinde WebInStats server’ından yanıt dönmez ise bağlantı otomatik olarak sonlandırılır. zaman aşım süresini 10 saniyeye uzatmak için kurulum koduna :
{_req_to:10000},
satırı eklenmelidir.
_fc false WebInStats’ın indirdiği dosyaların Local Strorage’da saklanıp saklanmayacağını belirtir. Örneğin her sayfada özel bir css kodu yükletiyorsanız bu özellik true ise kullanıcının cihazında css kodu bir kez yüklenir ve daha sonra Local Storage dan otomatik olarak çağırılır. (Bu parametre Local Storage kullanımının şişmesine neden olabilir. Dikkatli kullanılmalıdır.) Aktive etmek için kurulum koduna
{_fc:true},
satırı eklenmelidir.
_fct 1440 _fc=true ise dosyanın Local Storage da ne kadar süre saklanacağını dakika cinsinden belirtir. (60=1 Saat) Aktive etmek için kurulum koduna
{_fc:true},
{_fct:2880}, // 2 gün
satırı eklenmelidir.
_fcfs 40 _fc=true ise en fazla kaç Kilobayt verinin LocalStorage’da saklanabileceğini belirtir. Varsayılan değeri 40 KB dir. Kurulum koduna
{_fc:true},
{_fct:2880}, // 2 gün
{_fcfs:20}, // Max 20 KB
satırı eklenmelidir.
_cview true Viewability özelliğini açıp kapamayı sağlar. Varsayılan olarak açıktır. Bannerlarda Impression yanı sıra View verisini de gönderir. Kapatmak için kurulum koduna
{_cview:false},
eklenmelidir.
_cviewf false _cview özelliği açık ise ve bu özellik açık ise bannerın tamamı göründüğünde View olarak sayılmasını sağlar. Bu özellik kapalı ise banner’ın bir kısmı da görünse banner göründü olarak kabul edilir. Sadece bannerın tamamı göründüğünde sayması için kurulum koduna :
{_cviewf:true},
eklenmelidir
ps ‘/’ Sayfa ayıracını belirtir. Örneğin sayfa isimlerinizde klasör yapısına benzer bir yapı kullanıyorsanız (Örn : Ürün Sayfası/Cep Telefonu/Kılıf Aksesuar) ps alanı klasör ayıracı olarak girilmelidir. Eğer Ürün Sayfası:Cep Telefonu:Kılıf Aksesuar şeklinde veri gönderiyorsanız ps “:” şeklinde girilmelidir. Bu sayede kampanyada Page kısmına Ürün Sayfası:@all yazdığınızda tüm ürün sayfalarında geçerli kampanya açabilirsiniz. Sayfa ayıracını “:” olarak değiştirmek için kurulum koduna
{ps:”:”},
satırı eklenmelidir.
_cstto 1440 Klik cookiesinin varsayılan olarak ne kadar süre saklanacağını dakika cinsinden belirtir. Varsayılan 1 gündür. Kampanya bazlı özel klik cookie süresi girilmez ise bu alandaki değer geçerli olur. Varsayılan klik cookie süresini 1 saat yapmak için kurulum koduna
{_cstto:60},
eklenmelidir.
_csttoi 60 Impression cookiesinin varsayılan olarak ne kadar süre saklanacağını dakika cinsinden belirtir. Varsayılan 1 saattir. Kampanya bazlı özel Impression cookie süresi girilmez ise bu alandaki değer geçerli olur. Varsayılan impression cookie süresini 30 dakika yapmak için kurulum koduna
{_csttoi:30},
eklenmelidir.
_uto 2628000 Unique Visitor cookiesinin varsayılan olarak tutulacağı süreyi belirtir. Varsayılan olarak 5 yıldır. Kullanıcı 5 yıl içinde her yeni ziyaretinde bu süre 5 yıl daha uzar. varsayılan süreyi 1 seneye düşürmek için :
{_uto:525600},
eklenmelidir.
_vto 30 Dakika cinsinden ziyaret zaman aşımı süresidir. Kullanıcı ziyaretinde eğer 30 dakikadan fazla hareketsiz kalırsa 30 dakikadan sonra yeni bir visit olarak sayılır. Visit zaman aşımı süresini 60 dakika yapmak için kurulum koduna
{_vto:60},
satırı eklenmelidir.
_runi null Herhangi bir banner Impression’ı oluştuğunda (Kontrol Grupları da dahil) WIS banner objesi ile beraber bu fonksiyon çağırılır. Örnekte Tüm banner impressionlarını Google Analytics üzerinde saydırmak için Kurulum kodunda
{_runi:function(a){ga(ga.getAll()[0].get(“name”)+”.send”,”event”,”WIS”,”impression”,a.cn+”-“+a.n,!1)}},
satırı eklenmelidir.
_runv null Kullanıcı banner’ı gördüğünde WIS banner objesi ile beraber bu fonksiyon çağırılır. Tüm banner viewlarını Google Analytics üzerinde saydırmak için Kurulum kodunda
{_runv:function(a){ga(ga.getAll()[0].get(“name”)+”.send”,”event”,”WIS”,”view”,a.cn+”-“+a.n,!1)}},
satırı eklenmelidir.
_runc null Herhangi bir banner’a tıklandığında WIS banner objesi ile beraber bu fonksiyon çağırılır. Tüm banner kliklerini Google Analytics üzerinde saydırmak için Kurulum kodunda
{_runc:function(a){ga(ga.getAll()[0].get(“name”)+”.send”,”event”,”WIS”,”click”,a.cn+”-“+a.n,!1)}},
satırı eklenmelidir.
_runa null Herhangi bir action oluştuğunda Action objesi ile beraber bu fonksiyon çağırılır. Tüm Actionları Google Analytics üzerinde saydırmak için Kurulum kodunda
{_runa:function(a){ga(ga.getAll()[0].get(“name”)+”.send”,”event”,”WIS”,”action”,a.n,!1)}},
satırı eklenmelidir.
_runar null Herhangi bir action silindiğinde Action objesi ile beraber bu fonksiyon çağırılır. Tüm Actionlar silinmelerini Google Analytics üzerinde saydırmak için Kurulum kodunda
{_runar:function(a){ga(ga.getAll()[0].get(“name”)+”.send”,”event”,”WIS”,”actionremove”,a.n,!1)}},
satırı eklenmelidir.
_sck false Eğer siteniz tamamen https ise WebInStats’ın cookieleri güvenli olarak oluşturması için bu özellik aktif edilebilir. Bu özelliği sadece kurulumda 1 kez ayarlamalısınız. Sitede tüm cookieleri secure olarak ayarlamak için kurulum kodunda
{_sck:true},
satırı eklenmelidir.

Aşağıdaki örneklerde varsayılan _vto (Visit Timeout) parametresini 60 dakika, _req_to (Request Timeout) parametresini ise 10000 ms (10 sn) olarak değiştirmek için gerekli adımları bulabilirsiniz. :

Web
Android
iOS / Swift
iOS / Objective-C
Web

Please copy this code to all of the pages on your website before the </body> tag. (Also you can add the code to the Tag Manager)

<script>
window.wiso = window.wiso || [];
window.wiso.push(
 {s:"__YOUR_COMPANY_ID___"},
 {_cburl:"//__YOUR_SUBDOMAIN__.webinstats.com/"},
 {p:"__THE_PAGENAME_USER_CURRENTLY_VISIT__"},
 {cuid:"__CUSTOMER_ID__"}, // LEAVE THIS EMPTY IF USER IS NOT LOGGEDIN
// TWO PARAMETERS BELOW SHOULD BE ON THE PURCHASE PAGE 
 {trid:"__UNIQUE_TRANSACTION_ID__"}, // LEAVE THIS EMPTY IF IT'S NOT PURCHASE PAGE
 {am:"__TRANSACTION_AMOUNT__"}, // LEAVE THIS EMPTY IF IT'S NOT PURCHASE PAGE

 {_vto:"60"},
 {_req_to:"10000"}
);
(function() {var _wis = document.createElement('script');_wis.type = 'text/javascript';_wis.async = true; 
_wis.src='//dbfukofby5ycr.cloudfront.net/a9/js/dlc1.52.js';var s = document.getElementsByTagName('script')[0]; 
s.parentNode.insertBefore(_wis, s); })();
</script>
Android

Add the line below to AndroidManifest.xml file :


<uses-permission android:name="android.permission.INTERNET"></uses-permission>

Add the code below to each activities activity tag :


<activity android:name=".MainActivity"
 android:configChanges="orientation|screenSize">
</activity>

Complete the following steps in each activity of your application:

import webinstats.android_wis.Webinstats;

// define wiso object as a global object :
Webinstats wiso = new Webinstats("//__YOUR_SUBDOMAIN__.webinstats.com/","__YOUR_COMPANY_ID___","0");
// If you use activity, you must call execute method on onCreate() method in each activity

// If you use fragment activity, you must call execute method on onCreateView() method in each fragment
Map<String,String> map=new HashMap<>();
map.put("p","__THE_PAGENAME_USER_CURRENTLY_VISIT__");
map.put("cuid","__CUSTOMER_ID__"); // LEAVE THIS EMPTY IF USER IS NOT LOGGEDIN
// TWO PARAMETERS BELOW SHOULD BE ON THE PURCHASE PAGE 
map.put("trid","__UNIQUE_TRANSACTION_ID__"); // LEAVE THIS EMPTY IF IT'S NOT PURCHASE PAGE
map.put("am","__TRANSACTION_AMOUNT__"); // LEAVE THIS EMPTY IF IT'S NOT PURCHASE PAGE

map.put("_vto","60");
map.put("_req_to","10000");
// For each activity => call execute function on onCreate() method 
wiso.execute(this,map);
// For each fragment activity => call execute function on onCreateView() method F.I. :  
wiso.execute(getActivity(),map);

Add the code below to each activities onDestroy method or each Fragment onDestroyView method:


// For each activity => call execute function on onDestroy() method 
wiso.onChangeState(this);
// For each fragment activity => call execute function on onDestroyView() method F.I. :  
wiso.onChangeState(getActivity());
iOS / Swift

Paste the code below for each viewcontroller on your app

// You should add Allow Arbitrary Loads = YES under App Transport Security Settings in info.plist file to use the SDK.
// To access methods from SDK in your Swift file add the following line to the begining of the class.
import iOS_wis
// Add the code below for each viewDidLoad() method on viewcontroller

let wiso = Webinstats("//__YOUR_SUBDOMAIN__.webinstats.com/","___YOUR_COMPANY_ID___","0")
var map = [String:String]()
map["p"] = "__THE_PAGENAME_USER_CURRENTLY_VISIT__"
map["cuid"] = "__CUSTOMER_ID__" // LEAVE THIS EMPTY IF USER IS NOT LOGGEDIN
// TWO PARAMETERS BELOW SHOULD BE ON THE PURCHASE PAGE 
map["trid"] = "__UNIQUE_TRANSACTION_ID__" // LEAVE THIS EMPTY IF IT'S NOT PURCHASE PAGE
map["am"] = "__TRANSACTION_AMOUNT__" // LEAVE THIS EMPTY IF IT'S NOT PURCHASE PAGE

map["_vto"] = "60"
map["_req_to"] = "10000"
wiso.execute(view: self, localmap: map)
iOS / Objective-C

Paste the code below for each viewcontroller on your app

// You should add Allow Arbitrary Loads = YES under App Transport Security Settings in info.plist file to use the SDK.
// To access methods from SDK in your Objective-C file add the following line to the begining of the class.
@import iOS_wis;
// Add the code below for each -(void)viewDidLoad method on viewcontroller

Webinstats* wiso = [[Webinstats alloc] init:@"//__YOUR_SUBDOMAIN__.webinstats.com/" :@"___YOUR_COMPANY_ID___" :@"0"];
NSMutableDictionary *map = [[NSMutableDictionary alloc] init];
[map setObject:@"__THE_PAGENAME_USER_CURRENTLY_VISIT__" forKey:@"p"];
[map setObject:@"__CUSTOMER_ID__" forKey:@"cuid"]; // LEAVE THIS EMPTY IF USER IS NOT LOGGEDIN
// TWO PARAMETERS BELOW SHOULD BE ON THE PURCHASE PAGE
[map setObject:@"__UNIQUE_TRANSACTION_ID__" forKey:@"trid"]; // LEAVE THIS EMPTY IF IT'S NOT PURCHASE PAGE
[map setObject:@"__TRANSACTION_AMOUNT__" forKey:@"am"]; // LEAVE THIS EMPTY IF IT'S NOT PURCHASE PAGE

[map setObject:@"60" forKey:@"_vto"];
[map setObject:@"10000" forKey:@"_req_to"];
[wiso executeWithView:self localmap:map];

Sisteme ilave parametre gönderimi


O anda sitenizi gezen kullanıcı ya da gezilen sayfa ile ilgili özel bilgileri sisteme yollayarak bu bilgilere göre kampanya gösterim işlemi yapabilirsiniz. Sisteme ilave parametre göndermek için parametre isimleri düzgün belirlenmeli, mümkünse prefix kullanılarak takibi daha kolay yapılmalıdır. Örneğin firma ismimiz Example Company ise parametre isimlerini exa ile başlatabiliriz. Bu sayede kendi parametre tabikimizi daha kolay yapabiliriz. Parametre isimlerini belirlerken aşağıdaki kurallara dikkat edilmelidir :

  • Parametre ismi wis_ ile başlayamaz.
  • Parametre ismi _ ile başlayamaz.
  • Parametre ismi numerik değer ile başlayamaz.
  • Parametre isminde _ dışında noktalama, parantez vs.. gibi işaretler geçemez. _ ise en başta olamaz.
  • Parametre isimlerinde Türkçe karakter kullanılamaz.
  • Tercihen en az 5 harfli en fazla 20 harfli parametre adı kullanın.

Yanlış parametre isimleri

wis_cinsiyet : (Parametre adı wis_ ile başlamamalıdır.)

_cinsiyet : (Parametre adı _ ile başlamamalıdır.)

s : WebInStats özel parametresidir. bu linkten WebInStats sistem parametrelerini, bu linkten ise firmanıza özel tanımlanan parametreleri lütfen kontrol edin. Tercihen en az 5 harfli parametre adı kullanın.

segment.3 : Noktalama, virgül, parantez işaretleri kullanılmamalıdır.

segment[3] : Noktalama, virgül, parantez işaretleri kullanılmamalıdır.

segment(3) : Noktalama, virgül, parantez işaretleri kullanılmamalıdır.

segment-3 : Eksi ya da artı işareti kullanılmamalıdır.

eski_segment_3_degeri :Parametre adı 20 karakterden fazla olmamalıdır.

3segment :Parametre ismi rakam ile başlamamalıdır.

doğumtarihi : Türkçe karakter kullanılmamalıdır.

dogum tarihi : Boşluk kullanılmamalıdır.

Doğru parametre isimleri : 

cinsiyet

segment3

segment_3

dogumtarihi

dogum_tarihi

segment3value

Örneğin kullanıcının cinsiyetini ve toplam alışveriş adetini ilave parametre olarak göndermek istediğimizi düşünelim : Bu parametreler için exagender (cinsiyet) ve exatranscnt (alışveriş adeti) parametre isimlerini kullandığımızı düşünelim. Bu durumda parametreleri ilgili sayfaya / uygulamaya aşağıdaki şekilde ekleyebiliriz :

Web
Android
iOS / Swift
iOS / Objective-C
Web

Please copy this code to all of the pages on your website before the </body> tag. (Also you can add the code to the Tag Manager)

<script>
window.wiso = window.wiso || [];
window.wiso.push(
 {s:"__YOUR_COMPANY_ID___"},
 {_cburl:"//__YOUR_SUBDOMAIN__.webinstats.com/"},
 {p:"__THE_PAGENAME_USER_CURRENTLY_VISIT__"},
 {cuid:"__CUSTOMER_ID__"}, // LEAVE THIS EMPTY IF USER IS NOT LOGGEDIN
// TWO PARAMETERS BELOW SHOULD BE ON THE PURCHASE PAGE 
 {trid:"__UNIQUE_TRANSACTION_ID__"}, // LEAVE THIS EMPTY IF IT'S NOT PURCHASE PAGE
 {am:"__TRANSACTION_AMOUNT__"}, // LEAVE THIS EMPTY IF IT'S NOT PURCHASE PAGE

 {exagender:"Female"},
 {exatranscnt:"765"}
);
(function() {var _wis = document.createElement('script');_wis.type = 'text/javascript';_wis.async = true; 
_wis.src='//dbfukofby5ycr.cloudfront.net/a9/js/dlc1.52.js';var s = document.getElementsByTagName('script')[0]; 
s.parentNode.insertBefore(_wis, s); })();
</script>
Android

Add the line below to AndroidManifest.xml file :


<uses-permission android:name="android.permission.INTERNET"></uses-permission>

Add the code below to each activities activity tag :


<activity android:name=".MainActivity"
 android:configChanges="orientation|screenSize">
</activity>

Complete the following steps in each activity of your application:

import webinstats.android_wis.Webinstats;

// define wiso object as a global object :
Webinstats wiso = new Webinstats("//__YOUR_SUBDOMAIN__.webinstats.com/","__YOUR_COMPANY_ID___","0");
// If you use activity, you must call execute method on onCreate() method in each activity

// If you use fragment activity, you must call execute method on onCreateView() method in each fragment
Map<String,String> map=new HashMap<>();
map.put("p","__THE_PAGENAME_USER_CURRENTLY_VISIT__");
map.put("cuid","__CUSTOMER_ID__"); // LEAVE THIS EMPTY IF USER IS NOT LOGGEDIN
// TWO PARAMETERS BELOW SHOULD BE ON THE PURCHASE PAGE 
map.put("trid","__UNIQUE_TRANSACTION_ID__"); // LEAVE THIS EMPTY IF IT'S NOT PURCHASE PAGE
map.put("am","__TRANSACTION_AMOUNT__"); // LEAVE THIS EMPTY IF IT'S NOT PURCHASE PAGE

map.put("exagender","Female");
map.put("exatranscnt","765");
// For each activity => call execute function on onCreate() method 
wiso.execute(this,map);
// For each fragment activity => call execute function on onCreateView() method F.I. :  
wiso.execute(getActivity(),map);

Add the code below to each activities onDestroy method or each Fragment onDestroyView method:


// For each activity => call execute function on onDestroy() method 
wiso.onChangeState(this);
// For each fragment activity => call execute function on onDestroyView() method F.I. :  
wiso.onChangeState(getActivity());
iOS / Swift

Paste the code below for each viewcontroller on your app

// You should add Allow Arbitrary Loads = YES under App Transport Security Settings in info.plist file to use the SDK.
// To access methods from SDK in your Swift file add the following line to the begining of the class.
import iOS_wis
// Add the code below for each viewDidLoad() method on viewcontroller

let wiso = Webinstats("//__YOUR_SUBDOMAIN__.webinstats.com/","___YOUR_COMPANY_ID___","0")
var map = [String:String]()
map["p"] = "__THE_PAGENAME_USER_CURRENTLY_VISIT__"
map["cuid"] = "__CUSTOMER_ID__" // LEAVE THIS EMPTY IF USER IS NOT LOGGEDIN
// TWO PARAMETERS BELOW SHOULD BE ON THE PURCHASE PAGE 
map["trid"] = "__UNIQUE_TRANSACTION_ID__" // LEAVE THIS EMPTY IF IT'S NOT PURCHASE PAGE
map["am"] = "__TRANSACTION_AMOUNT__" // LEAVE THIS EMPTY IF IT'S NOT PURCHASE PAGE

map["exagender"] = "Female"
map["exatranscnt"] = "765"
wiso.execute(view: self, localmap: map)
iOS / Objective-C

Paste the code below for each viewcontroller on your app

// You should add Allow Arbitrary Loads = YES under App Transport Security Settings in info.plist file to use the SDK.
// To access methods from SDK in your Objective-C file add the following line to the begining of the class.
@import iOS_wis;
// Add the code below for each -(void)viewDidLoad method on viewcontroller

Webinstats* wiso = [[Webinstats alloc] init:@"//__YOUR_SUBDOMAIN__.webinstats.com/" :@"___YOUR_COMPANY_ID___" :@"0"];
NSMutableDictionary *map = [[NSMutableDictionary alloc] init];
[map setObject:@"__THE_PAGENAME_USER_CURRENTLY_VISIT__" forKey:@"p"];
[map setObject:@"__CUSTOMER_ID__" forKey:@"cuid"]; // LEAVE THIS EMPTY IF USER IS NOT LOGGEDIN
// TWO PARAMETERS BELOW SHOULD BE ON THE PURCHASE PAGE
[map setObject:@"__UNIQUE_TRANSACTION_ID__" forKey:@"trid"]; // LEAVE THIS EMPTY IF IT'S NOT PURCHASE PAGE
[map setObject:@"__TRANSACTION_AMOUNT__" forKey:@"am"]; // LEAVE THIS EMPTY IF IT'S NOT PURCHASE PAGE

[map setObject:@"Female" forKey:@"exagender"];
[map setObject:@"765" forKey:@"exatranscnt"];
[wiso executeWithView:self localmap:map];

Uygulamalarda Inline Banner entegrasyonu için yapılması gerekenler


Android
IOS
Android

Inline Banner için belirlediğiniz alanda sayfanın xml’ine FrameLayout tipinde bir container eklenmeli. Eklenen container’a id atanmalı. Bu id inline banner kampanya tanımlamaları için Advanced tab’ında bulunan selector kısmına yazılmalı.

Screen Shot 2018-09-10 at 10.10.08


<FrameLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:id="@+id/inlinebanner"
        android:visibility="invisible">
</FrameLayout>
IOS

Inline banner için belirlediğiniz alanda belirlediğiniz yükseklikte bir container ekleyip restorationidentifier kısmına id atanmalı. Bu id inline banner kampanya tanımlamaları için Advanced tab’ında bulunan selector kısmına yazılmalı.

Not : Eklediğiniz inline alanları hidden ve height:0 eklemeniz gerekiyor. Kampanya olduğu zaman bu alanların görünebilir olması için Inline Banner alanını eklediğiniz ViewController’ın içerisine hidden olan bu view’ı visible yapan ve yükseklik değerini belirlediğiniz değeri set ettiğiniz(örneğin:80) bir metot yazmanız gerekiyor. Metot parametre olarak mutlaka NSMutableDictionary/dictionary tipinde bir değişken almalı. Metodu ekledikten sonra panelde Banner Wizard —> Content —> Advanced —> Run SDK function kısmına metot ismini {“inline_funciton”:”showInlineBanner”} şeklinde ekliyoruz. Daha sonra inline bannerı uygulamanızda görebiliyor olacaksınız.

Objective – C


- (void) showInlineBanner:(NSMutableDictionary*)dictionary{
    [view setHidden:NO];
    view.frame.size.height = 80
}

Swift


@objc func showInlineBanner(_ parameters : [String:Any]){
        hidden.isHidden = false
        hidden.frame.size.height = 80
    }

Screen Shot 2018-09-10 at 10.12.56

Screen Shot 2018-09-10 at 10.13.28

Screen Shot 2018-09-10 at 10.14.01

Uygulamalarda özelleştirilmiş fonksiyon entegrasyonu


Banner görüntülendiğinde ya da banner’a tıklandığında dinamik olarak tetiklenebilir fonksiyonlardır.

Kullanıcıya özel atanan kupon kodunun sepette uygulanması için aşağıda bir entegrasyon örneği verilmiştir.

Bunun için aşağıdaki kod bloklarını uygulamanızda belirtilen yerlere eklemeniz yeterlidir.

Android
IOS
Android

Sepet_Activity sınıfına aşağıdaki metodu eklemeniz ve metot içerisinde “sepete uygula”yı tetikleyen metodu çağırmanız yeterli olucaktır. Kupon kodu JSONObject’in “run_parameter” değişkenine atanacak ve kullanıcının kupon kodu var ise create_discount metodu tetiklenecektir.

public void create_discount(JSONObject object){
        String code = object.getString("run_parameter");
        trigger_to_discount_func(code);
    }
IOS

Sepet_ViewController sınıfına aşağıdaki metodu eklemeniz ve metot içerisinde “sepete uygula”yı tetikleyen metodu çağırmanız yeterli olucaktır. Kupon kodu tipi dictionary olan parameters değişkeninin “run_parameter” değerinde atanacak ve kullanıcının kupon kodu var ise create_discount metodu tetiklenecektir.

func create_discount(_ parameters : [String:Any]) {
	var code : String = parameters[“run_parameter”]
	trigger_to_discount_func(code : String)
}

Özel Eventlerin Tetiklenmesi

Kullanıcı hareketlerini aksiyon bazlı takip etmek iş hedefleri doğrultusunda uygulamalarınızı optimize etmeyi kolaylaştırır.Kullanıcı kayıtları, satın alımlar gibi standart aksiyonların yanı sıra takip etmek istediğiniz her aksiyon için aşağıdaki kod bloğunu ilgili aksiyonun tetiklendiği alana eklemeniz yeterli olacaktır.

Web
Android
IOS
Web

wiso.custom.createEvent("Event_Name");
Android
wiso.createEvent("Event_Name");
IOS
 wiso.createEvent(eventname: "Event_Name",view: self,client_map: map)

Uygulamalarda alışveriş detay verisinin gönderilmesi

Satın alım işlemlerinde alınan ürün bilgilerinin gönderilmesi için aşağıdaki kod bloklarını ilgili bölümlere ekleyebilirsiniz.

Satın Alım Başarılı sayfasında execute() metodu çağırılmadan önce her ürün için aşağıdaki kod satırını çağırılması yeterlidir.

Web
Android
IOS
Web

wiso.additem("ILANID","QUANTITY","PRICE","CATEGORY","TITLE");
Android
wiso.addItem("__URUN_ID__","_URUN_ADEDI_","_URUN_FIYATI_","__URUN_KATEGORISI_","__URUN_BASLIGI__");
IOS
 wiso.addItem(productId: "_URUN_ID_", quantity: "_URUN_ADEDI_", price: "_URUN_FIYATI_", category: "__URUN_KATEGORISI_", title: "__URUN_BASLIGI__")

Android ve iOS uygulamalarınız için uygulamanın indirme kaynağını takip etme

Android
IOS
Android

Üç farklı metod kullanılabilir.

Birinci metod : Uygulamanın indirilme kaynağını SDK tarafında alıp, app tarafına döner. Uygulama silinmedikçe SDK tarafında Install Referrer API isteği bir kere atılır.


new WisReferrerAPI(this).setInstallReferrerWithCallback(new WisReferrerAPI.WisReferrerAPICallback() {
@Override
public void onResponse(com.android.installreferrer.api.ReferrerDetails referrerDetails) {
Log.v("webinstats_logs","succesfully get referrer with wis. Referrer detail : "+referrerDetails.getInstallReferrer());
Log.v("webinstats_logs","Referrer detail : "+referrerDetails.toString());
}
});

İkinci metod : Uygulamanın indirilme kaynağını SDK tarafında alır. Uygulama silinmedikçe SDK tarafında Install Referrer API isteği bir kere atılır.


new WisReferrerAPI(this).setInstallReferrer();

Üçüncü metod : Uygulamanın indirilme kaynağı app tarafında ya da farklı bir third party ile elde edilip SDK tarafına gönderilir. SDK tarafında Install Referrer API isteği atılmaz


new WisReferrerAPI(this).saveReferrer(referrerDetails);

Google’ın dökümnalarında install referrer api’in bir kere çağırılması tavsiye ediliyor. Sizde tek bir noktadan yönetmek isterseniz birinci ya da üçüncü metotla ilerleyebilirsiniz. Birinci metotta kaynak WebInStats ile alınır ve diğer tüm kaynaklarla paylaşılabilir. Üçüncü metotta ise farklı bir kaynak ile indirilme bilgisi elde edilir ve WebInStats SDK’sına gönderilir.

IOS
AppDelegate dosyanızda “adjustAttributionChanged” isimli Adjust Callback metoduna aşağıdaki satır eklenmeli

 Webinstats("//__YOUR_DOMAIN__.webinstats.com","__YOUR_COMPANY_ID",”0”).trackAppInstallWithAdjust(network: attribution.network, campaign: attribution.campaign)

Uygulamalara özel test modunun kullanılması için yapılması gerekenler


WebInStats Wistapp uygulamasını App store ya da Google Play üzerinden indirirerek kampanyalarınızı yayına almadan önce bu uygulama yardımı ile test modunda görüntüleyebilirsiniz.

Bunun için aşağıdaki kod bloklarını uygulamanızda belirtilen yerlere eklemeniz yeterlidir.

Android
IOS / Swift
IOS / Objective-C
Android

Uygulamanızda Deep Link tanımlarını yaptığınız activity sınıflarında aşağıdaki işaretli kodu onCreate() Methoduna ekleyin.

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.deep_link);
    Intent appLinkIntent = getIntent();
    Bundle bundle = getIntent().getExtras();
    Uri appLinkData = appLinkIntent.getData();
    Webinstats wobj = new Webinstats("//__YOUR_SUBDOMAIN__.webinstats.com/","___YOUR_COMPANY_ID___","0");
    wobj.saveTestParameters(this,appLinkData,bundle);
}
IOS / Swift

AppDelegate.swift dosyasında deep linki karşıladığınız application methoduna aşağıdaki işaretli kodu eklemeniz yeterlidir.

func application(_ application:UIApplication, open url:URL,sourceApplication:String?,annotation:Any)->Bool{
    Webinstats("//__YOUR_SUBDOMAIN__.webinstats.com/","___YOUR_COMPANY_ID___","0").saveTestParameters(url: url)
    return true
}
IOS / Objective-C

AppDelegate.m dosyasında deep linki karşıladığınız application methoduna aşağıdaki işaretli kodu eklemeniz yeterlidir.

- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options{
    [[[Webinstats alloc] init:@"//__YOUR_SUBDOMAIN__.webinstats.com/" :@"___YOUR_COMPANY_ID___" :@"0"] saveTestParametersWithUrl:url];
    return YES;
}