KURULUM
İçindekiler
- Önsöz
- Admin panelde kayıt açılması ve yeni firma oluşturma
- WebInStats SDKnın indirilmesi ve siteye / uygulamaya eklenmesi
- Push Notification Ürününün siteye / uygulamalara eklenmesi
- iOS 10 Rich Push Notifications
- App Push Notifications Field Mapping
- Varsayılan parametrelerin özelleştirilmesi
- Sisteme ilave parametre gönderimi
- Android ve iOS için Inline Banner Entegrasyonu
- Android ve iOS için Özelleştirilmiş Fonksiyon Entegrasyonu
- Özel Eventlerin Tetiklenmesi
- Android ve iOS için alışveriş detay verisinin gönderilmesi
- Android ve iOS uygulamalarınız için uygulamanın indirme kaynağını takip etme
- Uygulamalara özel test modunun kullanılması için yapılması gerekenler
Ö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
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 :
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 :
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.
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
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
Add your FCM application’s configuration file and HMS configuration file below the app section :
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.
Notification extension’da bulunan didReceive metotunda Webinstats sdk’sında bulunan didReceiveNotification metodunu çağırıyoruz.
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.
App Push Notifications Field Mapping
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
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
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
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ı.
<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
}
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
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
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
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
Üç 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
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
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;
}