Skip to content

Commit 41c268a

Browse files
author
guofang
committed
Merge branch 'dev_lucas' into 'dev_2.9.0'
视联网页面的时间统计的track See merge request Mobile/VideoOS-Android-SDK!23
2 parents f085026 + fd2d698 commit 41c268a

File tree

13 files changed

+1612
-25
lines changed

13 files changed

+1612
-25
lines changed

VideoOS/LuaViewSDK/src/cn/com/venvy/lua/plugin/LVEventPlugin.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -90,9 +90,9 @@ public Varargs invoke(Varargs args) {
9090
// 如果过来的uri中不带miniAppId,则需要尝试去table中找miniAppId put进 map里
9191
try {
9292
JSONObject jsonObject = new JSONObject(JsonUtil.toString(table));
93-
JSONObject miniAppInfo = jsonObject.getJSONObject("miniAppInfo");
93+
JSONObject miniAppInfo = jsonObject.optJSONObject("miniAppInfo");
9494
if(miniAppInfo != null){
95-
String miniAppId = miniAppInfo.getString("miniAppId");
95+
String miniAppId = miniAppInfo.optString("miniAppId");
9696
if(!TextUtils.isEmpty(miniAppId)){
9797
map.put("miniAppId",miniAppId);
9898
}

VideoOS/LuaViewSDK/src/com/taobao/luaview/userdata/kit/UDApplet.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -227,7 +227,6 @@ public Varargs invoke(Varargs args) {
227227
String targetType = jsonObject.optString("targetType");
228228
JSONObject linkData = jsonObject.optJSONObject("linkData");
229229
String downAPI = jsonObject.optString("downloadApkUrl");
230-
String deepLink = linkData.optString("deepLink");
231230
// targetType 1 落地页 2 deepLink 3 下载
232231
if (targetType.equalsIgnoreCase("3")) {
233232
JSONObject downloadTrackLink = jsonObject.optJSONObject("downloadTrackLink");
@@ -245,9 +244,9 @@ public Varargs invoke(Varargs args) {
245244
.setWidgetActionType(WidgetInfo.WidgetActionType.ACTION_OPEN_URL)
246245
.setUrl("");
247246
if (targetType.equalsIgnoreCase("1")) {
248-
builder.setLinkUrl(downAPI);
247+
builder.setLinkUrl(linkData.optString("linkUrl"));
249248
} else if (targetType.equalsIgnoreCase("2")) {
250-
builder.setDeepLink(deepLink);
249+
builder.setDeepLink(linkData.optString("deepLink"));
251250
}
252251
WidgetInfo widgetInfo = builder.build();
253252
if (platform.getWidgetClickListener() != null) {

VideoOS/VenvyLibrary/src/main/assets/lua/os_video_figureStarList_hotspot.lua

Lines changed: 667 additions & 0 deletions
Large diffs are not rendered by default.

VideoOS/VenvyLibrary/src/main/assets/lua/os_video_starContent_hotspot.lua

Lines changed: 825 additions & 0 deletions
Large diffs are not rendered by default.

VideoOS/VenvyLibrary/src/main/java/cn/com/venvy/common/statistics/VenvyStatisticsManager.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@ public final class VenvyStatisticsManager {
2121
public static final int VISUAL_SWITCH_COUNT = 3;
2222
public static final int PLAY_CONFIRM = 4;
2323
public static final int PRELOAD_FLOW = 5;
24+
public static final int OPEN_PAGE = 6;
25+
public static final int CLOSE_PAGE = 7;
2426

2527
private Platform platform;
2628
private VenvyStatisticsManager() {
@@ -53,6 +55,8 @@ public void submitCommonTrack(int type, JSONObject jsonObj) {
5355
submitPlayConfirmStatisticsInfo(jsonObj);
5456
}else if (VenvyStatisticsManager.PRELOAD_FLOW == type) {
5557
submitPreLoadFlowStatisticsInfo(jsonObj);
58+
}else if (VenvyStatisticsManager.OPEN_PAGE == type || VenvyStatisticsManager.CLOSE_PAGE == type) {
59+
executeThread(jsonObj.toString());
5660
}
5761
}
5862

VideoOS/VenvyLibrary/src/main/java/cn/com/venvy/common/utils/VenvyFileUtil.java

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,10 @@
33
import android.Manifest;
44
import android.annotation.SuppressLint;
55
import android.content.Context;
6+
import android.content.pm.ApplicationInfo;
67
import android.content.pm.PackageInfo;
78
import android.content.pm.PackageManager;
9+
import android.graphics.drawable.Drawable;
810
import android.os.Environment;
911
import android.support.annotation.NonNull;
1012
import android.text.TextUtils;
@@ -513,4 +515,56 @@ public static String getPackageNameByApkFile(Context context, String filePath) {
513515
PackageInfo pi = packageManager.getPackageArchiveInfo(filePath, 0);
514516
return pi != null ? pi.applicationInfo != null ? pi.applicationInfo.packageName : "" : "";
515517
}
518+
519+
520+
/**
521+
* 获取APK图标
522+
*
523+
* @param context
524+
* @param apkPath
525+
* @return
526+
*/
527+
public static Drawable getApkIcon(Context context, String apkPath) {
528+
529+
PackageManager packageManager = context.getPackageManager();
530+
PackageInfo pi = packageManager.getPackageArchiveInfo(apkPath, PackageManager.GET_ACTIVITIES);
531+
532+
if (pi != null) {
533+
ApplicationInfo appInfo = pi.applicationInfo;
534+
appInfo.sourceDir = apkPath;
535+
appInfo.publicSourceDir = apkPath;
536+
try {
537+
return appInfo.loadIcon(packageManager);
538+
} catch (Exception e) {
539+
e.printStackTrace();
540+
}
541+
}
542+
return null;
543+
}
544+
545+
546+
/**
547+
* 获取APK名称
548+
*
549+
* @param context
550+
* @param apkPath
551+
* @return
552+
*/
553+
public static String getApkLabel(Context context, String apkPath) {
554+
PackageManager packageManager = context.getPackageManager();
555+
PackageInfo pi = packageManager.getPackageArchiveInfo(apkPath, PackageManager.GET_ACTIVITIES);
556+
557+
if (pi != null) {
558+
ApplicationInfo appInfo = pi.applicationInfo;
559+
appInfo.sourceDir = apkPath;
560+
appInfo.publicSourceDir = apkPath;
561+
try {
562+
return appInfo.loadLabel(packageManager).toString();
563+
} catch (Exception e) {
564+
e.printStackTrace();
565+
}
566+
}
567+
return "";
568+
}
569+
516570
}

VideoOS/VenvyLibrary/src/main/java/cn/com/venvy/common/webview/JsBridge.java

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -263,11 +263,8 @@ public void openAds(String jsParams) {
263263
return;
264264
try {
265265
JSONObject msgObject = new JSONObject(jsParams);
266-
if (msgObject == null) {
267-
return;
268-
}
269266
JSONObject jsonObject = msgObject.optJSONObject("msg");
270-
if (msgObject == null) {
267+
if (jsonObject == null) {
271268
return;
272269
}
273270
if (jsonObject.has("targetType")) {

VideoOS/venvy_pub/src/main/java/cn/com/videopls/pub/VideoAdsHandler.java

Lines changed: 24 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,9 @@
77
import android.content.BroadcastReceiver;
88
import android.content.Context;
99
import android.content.Intent;
10+
import android.graphics.Bitmap;
1011
import android.graphics.BitmapFactory;
12+
import android.graphics.drawable.Drawable;
1113
import android.net.Uri;
1214
import android.os.Build;
1315
import android.os.Bundle;
@@ -17,6 +19,8 @@
1719
import android.support.v4.content.FileProvider;
1820
import android.text.TextUtils;
1921

22+
import com.taobao.luaview.util.DrawableUtil;
23+
2024
import org.json.JSONException;
2125
import org.json.JSONObject;
2226

@@ -83,12 +87,11 @@ public void initData(Bundle bundle, String fileProviderAuthorities) {
8387
launchPlanId = bundle.getString("launchPlanId"); // 投放计划id
8488
this.fileProviderAuthorities = fileProviderAuthorities;
8589

86-
VenvyStatisticsManager.getInstance().init(platform);
8790
ObservableManager.getDefaultObserable().addObserver(VenvyObservableTarget.TAG_INSTALL_START, this);
8891
}
8992

9093

91-
private void initNotification() {
94+
private void initNotification(String fileName) {
9295
Context context = platform.getContentViewGroup().getContext();
9396
if (notificationManager == null) {
9497
notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
@@ -104,7 +107,7 @@ private void initNotification() {
104107
.setSmallIcon(notificationIconRes)
105108
.setLargeIcon(BitmapFactory.decodeResource(context.getResources(), notificationIconRes))
106109
.setAutoCancel(false)
107-
.setContentTitle("开始下载")
110+
.setContentTitle("开始下载 " + fileName)
108111
.setContentText("准备下载")
109112
.setProgress(100, 0, false);
110113
notification = builderO.build();
@@ -136,7 +139,8 @@ public void execDownloadTask() {
136139
if (mDownloadTaskRunner == null) {
137140
mDownloadTaskRunner = new DownloadTaskRunner(platform);
138141
}
139-
final String filePath = VenvyFileUtil.getCachePath(platform.getContentViewGroup().getContext()) + LUA_CACHE_PATH + File.separator + Uri.parse(downloadAPI).getLastPathSegment();
142+
final String fileName = Uri.parse(downloadAPI).getLastPathSegment();
143+
final String filePath = VenvyFileUtil.getCachePath(platform.getContentViewGroup().getContext()) + LUA_CACHE_PATH + File.separator + fileName;
140144
VenvyLog.d("download to : " + filePath);
141145
DownloadTask downloadTask = new DownloadTask(platform.getContentViewGroup().getContext(), downloadAPI, filePath, true);
142146
mDownloadTaskRunner.startTask(downloadTask, new TaskListener<DownloadTask, Boolean>() {
@@ -150,7 +154,7 @@ public void onTaskStart(DownloadTask downloadTask) {
150154
VenvyLog.d("onTaskStart");
151155
trackToVideoOS("4");
152156
uploadTrack(dsTrackLinks); // 开始下载上报track
153-
initNotification();
157+
initNotification(fileName);
154158
}
155159

156160
@Override
@@ -187,15 +191,20 @@ public void onTaskSuccess(DownloadTask downloadTask, Boolean aBoolean) {
187191
notifyIntent.putExtra("filePath", filePath);
188192
notifyIntent.putExtra("fileProvider", fileProviderAuthorities);
189193
PendingIntent pendingIntent = PendingIntent.getBroadcast(platform.getContentViewGroup().getContext(), 0, notifyIntent, PendingIntent.FLAG_UPDATE_CURRENT);
194+
Drawable icon = VenvyFileUtil.getApkIcon(platform.getContentViewGroup().getContext(), filePath);
195+
Bitmap largeIcon = icon == null ? BitmapFactory.decodeResource(platform.getContentViewGroup().getContext().getResources(), notificationIconRes) : DrawableUtil.drawableToBitmap(icon);
196+
String fileLabel = VenvyFileUtil.getApkLabel(platform.getContentViewGroup().getContext(), filePath);
190197
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
191-
notification = builderO.setContentTitle("下载完成")
198+
notification = builderO.setContentTitle("下载完成 " + fileLabel)
192199
.setContentText("点击安装")
193200
.setAutoCancel(true)
201+
.setLargeIcon(largeIcon)
194202
.setContentIntent(pendingIntent).build();
195203
} else {
196-
notification = builder.setContentTitle("下载完成")
204+
notification = builder.setContentTitle("下载完成 " + fileLabel)
197205
.setContentText("点击安装")
198206
.setAutoCancel(true)
207+
.setLargeIcon(largeIcon)
199208
.setContentIntent(pendingIntent).build();
200209
}
201210

@@ -244,7 +253,7 @@ private void trackToVideoOS(String eventType) {
244253
}
245254
}
246255

247-
private void registerAppReceiver(String filePath) {
256+
private void registerAppReceiver(final String filePath) {
248257
String filePackageName = VenvyFileUtil.getPackageNameByApkFile(platform.getContentViewGroup().getContext(), filePath);
249258

250259
if (TextUtils.isEmpty(filePackageName)) return;
@@ -259,6 +268,13 @@ public void onAppInstall(String packageName) {
259268
uploadTrack(instTrackLinks);
260269
trackToVideoOS("7");
261270
VenvyLog.d("onAppInstall track: " + packageName);
271+
272+
// delete installed file
273+
File file = new File(filePath);
274+
if (file.exists()) {
275+
file.delete();
276+
}
277+
262278
}
263279

264280
@Override

VideoOS/venvy_pub/src/main/java/cn/com/videopls/pub/VideoPlusController.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -769,4 +769,15 @@ public void downloadAdsRes(Bundle bundle) {
769769
videoAdsHandler.initData(bundle, mPlatform.getPlatformInfo().getFileProviderAuth());
770770
videoAdsHandler.execDownloadTask();
771771
}
772+
773+
public void trackPageTime(boolean isOpen, String appletId) {
774+
JSONObject jsonObject = new JSONObject();
775+
try {
776+
jsonObject.put("type", isOpen ? String.valueOf(VenvyStatisticsManager.OPEN_PAGE) : String.valueOf(VenvyStatisticsManager.CLOSE_PAGE));
777+
jsonObject.put("appletId", appletId);
778+
} catch (JSONException e) {
779+
e.printStackTrace();
780+
}
781+
VenvyStatisticsManager.getInstance().submitCommonTrack(isOpen ? VenvyStatisticsManager.OPEN_PAGE : VenvyStatisticsManager.CLOSE_PAGE, jsonObject);
782+
}
772783
}

VideoOS/venvy_pub/src/main/java/cn/com/videopls/pub/VideoProgramToolBarView.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,6 @@ public void onClick(View view) {
9696
}
9797
}
9898
});
99-
10099
initVideoProgramView();
101100

102101
ivBack.setVisibility(INVISIBLE);
@@ -130,6 +129,7 @@ public void start(String appletId, String data, int type) {
130129
errorContent.setVisibility(GONE);
131130
startLoadingAnimation();
132131
videoProgramView.startVision(appletId, data, type, false, this);
132+
videoProgramView.getController().trackPageTime(true,appletId);
133133
} else {
134134
this.currentAppletId = appletId;
135135
retryContent.setVisibility(VISIBLE);
@@ -289,4 +289,8 @@ public void closeView() {
289289
}
290290
cancelLoadingAnimation();
291291
}
292+
293+
public void closed(String appletId){
294+
videoProgramView.getController().trackPageTime(false,appletId);
295+
}
292296
}

0 commit comments

Comments
 (0)