diff --git a/MobileTracking/.idea/misc.xml b/MobileTracking/.idea/misc.xml
index 54207cd230e18625c2d8f7904d539d01edbd2348..b29500ae620f7f353ced94dec37a8df5aca9b6bb 100644
--- a/MobileTracking/.idea/misc.xml
+++ b/MobileTracking/.idea/misc.xml
@@ -37,7 +37,8 @@
-
+
+
diff --git a/MobileTracking/MobileTrackingDemo/src/main/AndroidManifest.xml b/MobileTracking/MobileTrackingDemo/src/main/AndroidManifest.xml
index b78713e027a7b5accb5e51b9d9cdaa76c4b98d35..c7e84234e39c5f8c7932f41fbdca61b7ac332689 100644
--- a/MobileTracking/MobileTrackingDemo/src/main/AndroidManifest.xml
+++ b/MobileTracking/MobileTrackingDemo/src/main/AndroidManifest.xml
@@ -16,7 +16,7 @@
android:supportsRtl="true"
android:theme="@style/AppTheme">
diff --git a/MobileTracking/MobileTrackingDemo/src/main/assets/sdkconfig.xml b/MobileTracking/MobileTrackingDemo/src/main/assets/sdkconfig.xml
index f8d3216ba17ca22d922605de12e39994cda7b438..9218527b0bd10b63bf180cfcfa6c70df47966775 100644
--- a/MobileTracking/MobileTrackingDemo/src/main/assets/sdkconfig.xml
+++ b/MobileTracking/MobileTrackingDemo/src/main/assets/sdkconfig.xml
@@ -29,9 +29,9 @@
admaster
-
-
- admaster.js
+
+ http://developer.admaster.com.cn/docs/mma-sdk.min.js
+ mmasdk_mini.js
@@ -279,9 +279,10 @@
- ,
-
-
+
+ &
+
+ =
true
diff --git a/MobileTracking/libmobiletracking/src/main/java/cn/com/mma/mobile/tracking/api/ViewAbilityHandler.java b/MobileTracking/libmobiletracking/src/main/java/cn/com/mma/mobile/tracking/api/ViewAbilityHandler.java
index 1d79fa383df157752286b15212be67bf0e26ec5e..65d336712748b1fe28e5cd895b4799c9644a43e4 100644
--- a/MobileTracking/libmobiletracking/src/main/java/cn/com/mma/mobile/tracking/api/ViewAbilityHandler.java
+++ b/MobileTracking/libmobiletracking/src/main/java/cn/com/mma/mobile/tracking/api/ViewAbilityHandler.java
@@ -417,7 +417,12 @@ public class ViewAbilityHandler {
String[] splits = adUrl.split(company.separator);
for (String item : splits) {
if (item.startsWith(adAreaIdentifier)) {
- adAreaId = item.substring(1, item.length());
+// int startPoint = adAreaIdentifier.length() + company.equalizer.length();
+// adAreaId = item.substring(startPoint, item.length());
+
+ //替换广告位标识符+属性连接符=广告位ID
+ String regex = adAreaIdentifier + company.equalizer;
+ adAreaId = item.replaceFirst(regex, "");
break;
}
}
diff --git a/MobileTracking/libmobiletracking/src/main/java/cn/com/mma/mobile/tracking/viewability/origin/ViewAbilityStatsResult.java b/MobileTracking/libmobiletracking/src/main/java/cn/com/mma/mobile/tracking/viewability/origin/ViewAbilityStatsResult.java
index b38eb9767130aa71bd2d6009b8ba240f7886dff2..87c68e3d51037fb3ff3d721e0f73f5e64ff2425a 100644
--- a/MobileTracking/libmobiletracking/src/main/java/cn/com/mma/mobile/tracking/viewability/origin/ViewAbilityStatsResult.java
+++ b/MobileTracking/libmobiletracking/src/main/java/cn/com/mma/mobile/tracking/viewability/origin/ViewAbilityStatsResult.java
@@ -49,9 +49,9 @@ public class ViewAbilityStatsResult implements Serializable {
/* 存储标签内所有的属性 */
private HashMap viewabilityarguments;
- /* 对应配置项标签 监测链接QueryString分隔符 default=, */
+ /* 对应配置项标签 属性分隔符 default=, */
private String separator;
- /* 对应配置项标签 监测链接QueryString连接符 default= */
+ /* 对应配置项标签 属性链接符 default=空字符*/
private String equalizer;
/* 如果监测链接里带有标签为REDIRECTURL的项,截取出的Value,等待ViewAbility拼装完毕后追加到链接末尾*/
private String redirectURL;
@@ -91,6 +91,7 @@ public class ViewAbilityStatsResult implements Serializable {
return equalizer;
}
+
public String get(String key) {
return viewabilityarguments.get(key);
}
diff --git a/MobileTracking/libmobiletracking/src/main/java/cn/com/mma/mobile/tracking/viewability/origin/sniffer/ViewAbilityExplorer.java b/MobileTracking/libmobiletracking/src/main/java/cn/com/mma/mobile/tracking/viewability/origin/sniffer/ViewAbilityExplorer.java
index aa40acadcfcb947f518394dd62dfab2404d89c2b..8e08a18beca648d5aa875009e8a996d264a4afcc 100644
--- a/MobileTracking/libmobiletracking/src/main/java/cn/com/mma/mobile/tracking/viewability/origin/sniffer/ViewAbilityExplorer.java
+++ b/MobileTracking/libmobiletracking/src/main/java/cn/com/mma/mobile/tracking/viewability/origin/sniffer/ViewAbilityExplorer.java
@@ -167,7 +167,10 @@ public class ViewAbilityExplorer implements Serializable {
String measureArgument = viewAbilityStatsResult.get(ViewAbilityStatsResult.ADMEASURABILITY);
if (!TextUtils.isEmpty(measureArgument)) {
sb.append(separator);
- sb.append(measureArgument + equalizer + "1");
+ sb.append(measureArgument);
+ sb.append(equalizer);
+ //如果ViewAbility监测已经到了组装数据的环节,默认MeasureAbility = true
+ sb.append("1");
}
} catch (Exception e) {
e.printStackTrace();
diff --git a/MobileTracking/libmobiletracking/src/main/java/cn/com/mma/mobile/tracking/viewability/origin/sniffer/ViewFrameSlice.java b/MobileTracking/libmobiletracking/src/main/java/cn/com/mma/mobile/tracking/viewability/origin/sniffer/ViewFrameSlice.java
index 0ec1b59e0dc5391d290ff8bb9e214da285a00683..9995de20f46797f19474255486cc4204fb463ca7 100644
--- a/MobileTracking/libmobiletracking/src/main/java/cn/com/mma/mobile/tracking/viewability/origin/sniffer/ViewFrameSlice.java
+++ b/MobileTracking/libmobiletracking/src/main/java/cn/com/mma/mobile/tracking/viewability/origin/sniffer/ViewFrameSlice.java
@@ -37,7 +37,7 @@ public class ViewFrameSlice implements Serializable {
//2l 透明度 1.0=完全不透明 0.0=完全透明
private float alpha;
- //2m 是否隐藏 0=隐藏 1=不隐藏
+ //2m 是否隐藏 0=不隐藏 1=隐藏
private int hidden;
//2r 屏幕是否点亮 1=开屏 0 = 熄灭
private int screenOn;
@@ -86,7 +86,7 @@ public class ViewFrameSlice implements Serializable {
//是否被隐藏
- hidden = (adView.getVisibility() == View.VISIBLE) ? 1 : 0;
+ hidden = (adView.getVisibility() == View.VISIBLE) ? 0 : 1;
//可视尺寸 在当前屏幕范围内,排除不可见区域后,view的宽和高,滑动时实时变动(和WindowFrame相交运算)
Rect screenRect = ViewHelper.getScreenRect(context);
@@ -180,7 +180,7 @@ public class ViewFrameSlice implements Serializable {
*/
public boolean validateAdVisible(float confCoverRate) {
//覆盖率<0.5 && 不隐藏 && 不完全透明 && 开屏
- if (coverRate < confCoverRate && hidden == 1 && alpha > 0.001 && screenOn == 1) {
+ if (coverRate < confCoverRate && hidden == 0 && alpha > 0.001 && screenOn == 1) {
visibleAbility = 1;
} else {
visibleAbility = 0;
diff --git a/MobileTracking/libmobiletracking/src/main/java/cn/com/mma/mobile/tracking/viewability/webjs/ViewAbilityJsExplorer.java b/MobileTracking/libmobiletracking/src/main/java/cn/com/mma/mobile/tracking/viewability/webjs/ViewAbilityJsExplorer.java
index 84b76a6c60c5a7696d59619d028e7276e7589a55..fcbe11330731f7ae2835a4f6cbf9c7afbabf8320 100644
--- a/MobileTracking/libmobiletracking/src/main/java/cn/com/mma/mobile/tracking/viewability/webjs/ViewAbilityJsExplorer.java
+++ b/MobileTracking/libmobiletracking/src/main/java/cn/com/mma/mobile/tracking/viewability/webjs/ViewAbilityJsExplorer.java
@@ -1,6 +1,7 @@
package cn.com.mma.mobile.tracking.viewability.webjs;
import android.content.Context;
+import android.content.Intent;
import android.graphics.Bitmap;
import android.net.Uri;
import android.net.http.SslError;
@@ -19,6 +20,7 @@ import org.json.JSONObject;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
+import cn.com.mma.mobile.tracking.api.Countly;
import cn.com.mma.mobile.tracking.bean.Company;
import cn.com.mma.mobile.tracking.util.Logger;
import cn.com.mma.mobile.tracking.util.klog.KLog;
@@ -41,8 +43,8 @@ public class ViewAbilityJsExplorer {
private DataCacheManager dataCacheManager;
private String companyName;
- private static final String JS_INTERFACE_SENDMESSAGE = "javascript:MMASDK.sendViewabilityMessage";
- private static final String JS_INTERFACE_SENDCACHEMESSAGE = "javascript:MMASDK.sendCacheMessage";
+ private static final String JS_INTERFACE_SENDMESSAGE = "javascript:sendViewabilityMessage";
+ private static final String JS_INTERFACE_SENDCACHEMESSAGE = "javascript:sendCacheMessage";
private static final String JS_SCHEME = "mmaViewabilitySDK";
@@ -107,7 +109,6 @@ public class ViewAbilityJsExplorer {
private void initJavaScripts() {
-
String content = String.format("\n\n\n \n \n\n\n \n \n
\n\n", 1, 1, bridgeJs);
//KLog.d("loadURL:" + content);
@@ -120,10 +121,10 @@ public class ViewAbilityJsExplorer {
public void addExplorerTask(String adURL, View adView, boolean isVideo) {
- if (!isJavaScriptEnabled) {
- Logger.e("JavaScript is not enable in current WebView,the current monitoring scheme is not available.");
- return;
- }
+// if (!isJavaScriptEnabled) {
+// Logger.e("JavaScript is not enable in current WebView,the current monitoring scheme is not available.");
+// return;
+// }
//如果JS为空,则在线获取一次
if (TextUtils.isEmpty(bridgeJs)) {
@@ -135,6 +136,13 @@ public class ViewAbilityJsExplorer {
monitorWorkers.put(abilityJsBean.getAdviewabilityId(), abilityJsBean);
Logger.d("URL:" + adURL + " 开启View Ability JS 监测,监测ID:" + abilityJsBean.getAdviewabilityId());
+
+ //[LOCALTEST] 测试计数:带ViewAbility曝光事件产生计数
+ if (Countly.LOCAL_TEST) {
+ Intent intent = new Intent(Countly.ACTION_STATS_VIEWABILITY);
+ mContext.sendBroadcast(intent);
+ }
+
}
@@ -187,7 +195,8 @@ public class ViewAbilityJsExplorer {
if (eventArr.length() > 0) {
- String fire = String.format(JS_INTERFACE_SENDMESSAGE + "(JSON.stringify(%s))", eventArr.toString());
+ String fire = String.format(JS_INTERFACE_SENDMESSAGE + "(%s)", eventArr.toString());
+ //String fire = String.format(JS_INTERFACE_SENDMESSAGE + "(JSON.stringify(%s))", eventArr.toString());
//KLog.i("onExplore", "fire:" + fire);
mWebView.loadUrl(fire);
}
@@ -299,6 +308,12 @@ public class ViewAbilityJsExplorer {
}
ViewAbilityJsBean abilityJsBean = monitorWorkers.get(adviewabilityid);
if (abilityJsBean != null) abilityJsBean.setCompleted(true);
+
+ //[LOCALTEST] 测试计数:记录发送成功
+ if (Countly.LOCAL_TEST) {
+ Intent intent = new Intent(Countly.ACTION_STATS_SUCCESSED);
+ mContext.sendBroadcast(intent);
+ }
}
/**
diff --git a/MobileTracking/libmobiletracking/src/main/java/cn/com/mma/mobile/tracking/viewability/webjs/ViewAbilityMessage.java b/MobileTracking/libmobiletracking/src/main/java/cn/com/mma/mobile/tracking/viewability/webjs/ViewAbilityMessage.java
index 8eed3193eabada6768e98469b199d3bc458f6843..abf241af9be99ca066653b6cfe879ed312592296 100644
--- a/MobileTracking/libmobiletracking/src/main/java/cn/com/mma/mobile/tracking/viewability/webjs/ViewAbilityMessage.java
+++ b/MobileTracking/libmobiletracking/src/main/java/cn/com/mma/mobile/tracking/viewability/webjs/ViewAbilityMessage.java
@@ -61,8 +61,8 @@ public class ViewAbilityMessage {
alpha = adView.getAlpha();
}
- //是否被隐藏
- int hidden = (adView.getVisibility() == View.VISIBLE) ? 1 : 0;
+ //是否隐藏 0 不隐藏 1 隐藏
+ int hidden = (adView.getVisibility() == View.VISIBLE) ? 0 : 1;
String visibleSize = "";
float coverRate = 0.0f;