added list of events to send them later
This commit is contained in:
@@ -15,7 +15,7 @@ import org.json.JSONArray;
|
||||
import org.json.JSONException;
|
||||
import org.json.JSONObject;
|
||||
import ru.vtosters.hooks.other.Preferences;
|
||||
import ru.vtosters.lite.music.Metrics;
|
||||
import ru.vtosters.lite.utils.Metrics;
|
||||
|
||||
import java.util.Locale;
|
||||
import java.util.Objects;
|
||||
@@ -324,8 +324,6 @@ public class VideoTracker {
|
||||
}
|
||||
|
||||
public void sendMetrics(String event) throws JSONException {
|
||||
JSONArray arr = new JSONArray();
|
||||
|
||||
JSONObject jsonObject = new JSONObject();
|
||||
jsonObject.put("e", event);
|
||||
jsonObject.put("source", this.f15639c);
|
||||
@@ -335,10 +333,6 @@ public class VideoTracker {
|
||||
jsonObject.put("position_sec", 0);
|
||||
jsonObject.put("cur_quality", "auto");
|
||||
|
||||
arr.put(jsonObject);
|
||||
|
||||
Log.d("VideoTracker", arr.toString());
|
||||
|
||||
Metrics.trackEvents(arr.toString());
|
||||
Metrics.trackEvents(jsonObject);
|
||||
}
|
||||
}
|
||||
@@ -15,7 +15,7 @@ import org.json.JSONArray;
|
||||
import org.json.JSONException;
|
||||
import org.json.JSONObject;
|
||||
import ru.vtosters.hooks.other.Preferences;
|
||||
import ru.vtosters.lite.music.Metrics;
|
||||
import ru.vtosters.lite.utils.Metrics;
|
||||
|
||||
import java.util.Objects;
|
||||
import java.util.UUID;
|
||||
@@ -161,7 +161,6 @@ public final class VKMusicStatsTracker implements MusicStatsTracker {
|
||||
}
|
||||
|
||||
private void makeMetricsRequest(MusicPlaybackParams musicPlaybackParams, String str) throws JSONException {
|
||||
JSONArray events = new JSONArray();
|
||||
JSONObject event = new JSONObject();
|
||||
|
||||
if (str.equals("music_stop_playback")) {
|
||||
@@ -173,7 +172,6 @@ public final class VKMusicStatsTracker implements MusicStatsTracker {
|
||||
event.put("reason", "new");
|
||||
event.put("state", "app");
|
||||
event.put("duration", musicPlaybackParams.a());
|
||||
events.put(event);
|
||||
} else {
|
||||
event.put("e", str);
|
||||
event.put("audio_id", musicPlaybackParams.c());
|
||||
@@ -185,11 +183,9 @@ public final class VKMusicStatsTracker implements MusicStatsTracker {
|
||||
if (StringExt.a((CharSequence) musicPlaybackParams.e())) {
|
||||
event.put("prev_audio_id", musicPlaybackParams.e());
|
||||
}
|
||||
|
||||
events.put(event);
|
||||
}
|
||||
|
||||
Metrics.trackEvents(events.toString());
|
||||
Metrics.trackEvents(event);
|
||||
}
|
||||
|
||||
private Analytics.l a(MusicPlaybackParams musicPlaybackParams, String str) {
|
||||
|
||||
@@ -1,38 +0,0 @@
|
||||
package ru.vtosters.lite.music;
|
||||
|
||||
import android.util.Log;
|
||||
import com.vk.core.network.Network;
|
||||
import okhttp3.Call;
|
||||
import okhttp3.Callback;
|
||||
import okhttp3.Request;
|
||||
import okhttp3.Response;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
import static com.vk.core.network.Network.ClientType.CLIENT_API;
|
||||
import static ru.vtosters.lite.proxy.ProxyUtils.getApi;
|
||||
import static ru.vtosters.lite.utils.AccountManagerUtils.getUserToken;
|
||||
|
||||
public class Metrics {
|
||||
public static void trackEvents(String object) {
|
||||
trackEventsRequest(object);
|
||||
}
|
||||
|
||||
private static void trackEventsRequest(String object) {
|
||||
Request req = new Request.a()
|
||||
.b("https://" + getApi() + "/method/stats.trackEvents?events=" + object + "&v=5.119&access_token=" + getUserToken())
|
||||
.a();
|
||||
|
||||
Network.b(CLIENT_API).a(req).a(new Callback() {
|
||||
@Override
|
||||
public void a(Call call, IOException e) {
|
||||
e.fillInStackTrace();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void a(Call call, Response response) throws IOException {
|
||||
Log.d("MusicMetrics", response.a().g());
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,93 @@
|
||||
package ru.vtosters.lite.utils;
|
||||
|
||||
import android.content.Context;
|
||||
import android.net.ConnectivityManager;
|
||||
import android.net.NetworkCapabilities;
|
||||
import android.net.NetworkInfo;
|
||||
import android.os.Build;
|
||||
import android.util.Log;
|
||||
import com.vk.core.network.Network;
|
||||
import okhttp3.Call;
|
||||
import okhttp3.Callback;
|
||||
import okhttp3.Request;
|
||||
import okhttp3.Response;
|
||||
import org.json.JSONArray;
|
||||
import org.json.JSONObject;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
import static com.vk.core.network.Network.ClientType.CLIENT_API;
|
||||
import static ru.vtosters.hooks.other.Preferences.getBoolValue;
|
||||
import static ru.vtosters.lite.proxy.ProxyUtils.getApi;
|
||||
import static ru.vtosters.lite.utils.AccountManagerUtils.getUserToken;
|
||||
|
||||
public class Metrics {
|
||||
private static JSONArray events = new JSONArray();
|
||||
|
||||
public static void trackEvents(JSONObject object) {
|
||||
if (shouldSaveUserTraffic()) {
|
||||
trackEventList(object);
|
||||
} else {
|
||||
trackEventsImmediately(object);
|
||||
}
|
||||
}
|
||||
|
||||
private static boolean shouldSaveUserTraffic() {
|
||||
return getBoolValue("isRoamingState", false) || isMobileNetwork();
|
||||
}
|
||||
|
||||
private static void trackEventList(JSONObject object) {
|
||||
events.put(object);
|
||||
|
||||
if (events.length() > 2) {
|
||||
trackEventsRequest(events);
|
||||
resetEvents();
|
||||
}
|
||||
}
|
||||
|
||||
private static void trackEventsImmediately(JSONObject object) {
|
||||
JSONArray eventsToTrack = new JSONArray();
|
||||
eventsToTrack.put(object);
|
||||
trackEventsRequest(eventsToTrack);
|
||||
}
|
||||
|
||||
private static void resetEvents() {
|
||||
events = new JSONArray();
|
||||
}
|
||||
|
||||
@SuppressWarnings("deprecation")
|
||||
private static boolean isMobileNetwork() {
|
||||
ConnectivityManager connectivityManager = (ConnectivityManager) AndroidUtils.getGlobalContext().getSystemService(Context.CONNECTIVITY_SERVICE);
|
||||
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
|
||||
android.net.Network network = connectivityManager.getActiveNetwork();
|
||||
if (network != null) {
|
||||
NetworkCapabilities networkCapabilities = connectivityManager.getNetworkCapabilities(network);
|
||||
return networkCapabilities != null && networkCapabilities.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR);
|
||||
}
|
||||
} else {
|
||||
NetworkInfo networkInfo = connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
|
||||
return networkInfo != null && networkInfo.isConnected();
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
private static void trackEventsRequest(JSONArray object) {
|
||||
Request req = new Request.a()
|
||||
.b("https://" + getApi() + "/method/stats.trackEvents?events=" + object.toString() + "&v=5.119&access_token=" + getUserToken())
|
||||
.a();
|
||||
|
||||
Network.b(CLIENT_API).a(req).a(new Callback() {
|
||||
@Override
|
||||
public void a(Call call, IOException e) {
|
||||
e.fillInStackTrace();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void a(Call call, Response response) throws IOException {
|
||||
Log.d("Metrics", response.a().g());
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user