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;