Skip to content

Commit cedc4de

Browse files
authored
UPDATE flutter-hms-analytics 6.5.0+300
1 parent 0c19db8 commit cedc4de

File tree

15 files changed

+663
-302
lines changed

15 files changed

+663
-302
lines changed

Diff for: flutter-hms-analytics/CHANGELOG.md

+10-2
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,12 @@
1+
## 6.5.0+300
2+
3+
- **[Breaking Change]** Added the ```getInstance({String routePolicy})``` method. With this version ```getInstance``` method must be called from the application to initialize plugin in Android platform.
4+
- Added events to [HAEventType](lib/src/constants/analytics_constants.dart).
5+
- Added parameters to [HAParamType](lib/src/constants/analytics_constants.dart).
6+
- Added attributes to [HAUserProfileType](lib/src/constants/analytics_constants.dart).
7+
- Added ```setChannel```, ```setPropertyCollection``` and ```setCustomReferrer``` methods to [HMSAnalytics](lib/src/hms_analytics.dart) class.
8+
- Supported on devices running Android 12.
9+
110
## 6.2.0+302
211

312
- Deleted the capability of prompting users to install HMS Core (APK).
@@ -11,8 +20,7 @@
1120

1221
- Changed the value of minSdkVersion from 19 to 18 to support more mobile phones.
1322
- Added custom data support to onEvent API.
14-
- **[Breaking Changes]**
15-
- Deleted the **OccurredTime** and **InstallTime** parameters from the automatically collected events and predefined events.
23+
- **[Breaking Change]** Deleted the **OccurredTime** and **InstallTime** parameters from the automatically collected events and predefined events.
1624

1725
## 5.1.0+301
1826

Diff for: flutter-hms-analytics/android/build.gradle

+1-1
Original file line numberDiff line numberDiff line change
@@ -41,5 +41,5 @@ android {
4141
}
4242

4343
dependencies {
44-
implementation 'com.huawei.hms:hianalytics:6.4.1.302'
44+
implementation 'com.huawei.hms:hianalytics:6.5.0.300'
4545
}

Diff for: flutter-hms-analytics/android/src/main/java/com/huawei/hms/flutter/analytics/AnalyticsContentProvider.java

+25-6
Original file line numberDiff line numberDiff line change
@@ -18,26 +18,45 @@
1818

1919
import android.content.ContentProvider;
2020
import android.content.ContentValues;
21+
import android.content.pm.ApplicationInfo;
22+
import android.content.pm.PackageManager;
2123
import android.database.Cursor;
2224
import android.net.Uri;
2325
import android.util.Log;
2426

2527
import com.huawei.hms.analytics.HiAnalytics;
2628
import com.huawei.hms.analytics.HiAnalyticsInstance;
2729

30+
import java.util.Arrays;
31+
2832
public class AnalyticsContentProvider extends ContentProvider {
2933
private static final String TAG = AnalyticsContentProvider.class.getSimpleName();
34+
private final String[] routePolicyList = new String[]{"CN", "DE", "SG", "RU"};
3035

3136
@Override
3237
public boolean onCreate() {
3338
Log.i(TAG, "AnalyticsContentProvider -> onCreate");
34-
if (this.getContext() != null) {
35-
HiAnalyticsInstance instance = HiAnalytics.getInstance(this.getContext().getApplicationContext());
36-
instance.setAnalyticsEnabled(true);
37-
} else {
38-
Log.e(TAG, "Context was null. Couldn't enable analytics.");
39+
try {
40+
ApplicationInfo appInfo = this.getContext().getApplicationContext().getPackageManager().getApplicationInfo(this.getContext().getApplicationContext().getPackageName(), PackageManager.GET_META_DATA);
41+
boolean isEnabled = appInfo.metaData.getBoolean("hms_is_analytics_enabled", true);
42+
43+
if (!isEnabled) {
44+
return true;
45+
}
46+
47+
String routePolicy = appInfo.metaData.getString("hms_is_analytics_enabled");
48+
49+
if (Arrays.asList(routePolicyList).contains(routePolicy)) {
50+
HiAnalytics.getInstance(this.getContext(), routePolicy);
51+
return true;
52+
}
53+
} catch (Exception e) {
54+
Log.e(TAG, "HiAnalytics -> Invalid routePolicy! Initialization failed. Message: " + e.getMessage());
3955
}
40-
return false;
56+
57+
HiAnalyticsInstance instance = HiAnalytics.getInstance(this.getContext().getApplicationContext());
58+
instance.setAnalyticsEnabled(true);
59+
return true;
4160
}
4261

4362
@Override

Diff for: flutter-hms-analytics/android/src/main/java/com/huawei/hms/flutter/analytics/AnalyticsPlugin.java

+1-5
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,6 @@
3030
import io.flutter.plugin.common.PluginRegistry;
3131

3232
public class AnalyticsPlugin implements FlutterPlugin {
33-
34-
private HMSAnalyticsModule analyticsModule;
3533
private HMSAnalyticsMethodCallHandler analyticsMethodCallHandler;
3634
private MethodChannel channel;
3735

@@ -48,8 +46,7 @@ public void onAttachedToEngine(@NonNull FlutterPluginBinding flutterPluginBindin
4846
private void onAttachedToEngine(Context applicationContext, BinaryMessenger messenger) {
4947
WeakReference<Context> weakContext = new WeakReference<>(applicationContext);
5048
channel = new MethodChannel(messenger, "com.huawei.hms.flutter.analytics");
51-
analyticsModule = new HMSAnalyticsModule(weakContext);
52-
analyticsMethodCallHandler = new HMSAnalyticsMethodCallHandler(analyticsModule, weakContext);
49+
analyticsMethodCallHandler = new HMSAnalyticsMethodCallHandler(weakContext);
5350
channel.setMethodCallHandler(analyticsMethodCallHandler);
5451
}
5552

@@ -59,7 +56,6 @@ public void onDetachedFromEngine(@NonNull FlutterPluginBinding binding) {
5956
channel.setMethodCallHandler(null);
6057
channel = null;
6158
}
62-
analyticsModule = null;
6359
analyticsMethodCallHandler = null;
6460
}
6561
}

Diff for: flutter-hms-analytics/android/src/main/java/com/huawei/hms/flutter/analytics/HMSAnalyticsModule.java

+45-17
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,6 @@
2121

2222
import com.huawei.hms.analytics.HiAnalytics;
2323
import com.huawei.hms.analytics.HiAnalyticsInstance;
24-
import com.huawei.hms.analytics.type.HAEventType;
25-
import com.huawei.hms.analytics.type.HAParamType;
2624
import com.huawei.hms.analytics.type.ReportPolicy;
2725
import com.huawei.hms.flutter.analytics.logger.HMSLogger;
2826
import com.huawei.hms.flutter.analytics.presenter.HMSAnalyticsContract;
@@ -43,15 +41,10 @@ public class HMSAnalyticsModule {
4341
private final WeakReference<Context> weakContext;
4442

4543
// ViewModel instance
46-
private final HMSAnalyticsContract.Presenter viewModel;
47-
48-
// HiAnalytics instance
49-
private final HiAnalyticsInstance analyticsInstance;
44+
private HMSAnalyticsContract.Presenter viewModel;
5045

5146
public HMSAnalyticsModule(WeakReference<Context> context) {
5247
this.weakContext = context;
53-
this.viewModel = new HMSAnalyticsViewModel(getContext());
54-
this.analyticsInstance = HiAnalytics.getInstance((getContext()));
5548
}
5649

5750
private Context getContext() {
@@ -138,7 +131,7 @@ public void getAAID(Result result) {
138131
public void getUserProfiles(MethodCall methodCall, Result result) {
139132
boolean predefined = MapUtils.toBoolean("predefined", methodCall.argument("predefined"));
140133
viewModel.getUserProfiles(new HMSAnalyticsModule.HMSAnalyticsResultHandler<>(result, "predefined", weakContext),
141-
predefined);
134+
predefined);
142135
}
143136

144137
public void pageStart(MethodCall methodCall, Result result) {
@@ -162,8 +155,8 @@ public void setReportPolicies(MethodCall methodCall, Result result) {
162155

163156
public void getReportPolicyThreshold(MethodCall methodCall, Result result) {
164157
viewModel.getReportPolicyThreshold(
165-
new HMSAnalyticsModule.HMSAnalyticsResultHandler<>(result, "getReportPolicyThreshold", weakContext),
166-
getReportPolicyType(MapUtils.getString("reportPolicyType", methodCall.argument("reportPolicyType"))));
158+
new HMSAnalyticsModule.HMSAnalyticsResultHandler<>(result, "getReportPolicyThreshold", weakContext),
159+
getReportPolicyType(MapUtils.getString("reportPolicyType", methodCall.argument("reportPolicyType"))));
167160
}
168161

169162
public void setRestrictionEnabled(MethodCall methodCall, Result result) {
@@ -174,22 +167,22 @@ public void setRestrictionEnabled(MethodCall methodCall, Result result) {
174167

175168
public void isRestrictionEnabled(Result result) {
176169
viewModel.isRestrictionEnabled(
177-
new HMSAnalyticsModule.HMSAnalyticsResultHandler<>(result, "isRestrictionEnabled", weakContext));
170+
new HMSAnalyticsModule.HMSAnalyticsResultHandler<>(result, "isRestrictionEnabled", weakContext));
178171
}
179172

180173
public void setCollectAdsIdEnabled(MethodCall methodCall, Result result) {
181174
boolean value = MapUtils.toBoolean("enabled", methodCall.argument("enabled"));
182-
analyticsInstance.setCollectAdsIdEnabled(value);
175+
viewModel.setCollectAdsIdEnabled(value);
183176
result.success(null);
184177
}
185178

186179
public void addDefaultEventParams(MethodCall methodCall, Result result) {
187180
Map<String, Object> val = MapUtils.objectToMap(methodCall.argument("params"));
188181
Bundle params = MapUtils.mapToBundle(val, false);
189-
if(params.isEmpty()){
182+
if (params.isEmpty()) {
190183
params = null;
191184
}
192-
analyticsInstance.addDefaultEventParams(params);
185+
viewModel.addDefaultEventParams(params);
193186
result.success(null);
194187
}
195188

@@ -206,7 +199,7 @@ public void enableLogWithLevel(MethodCall methodCall, Result result) {
206199
intValueOfLevel = LogLevel.valueOf(level).intValue;
207200
} catch (IllegalArgumentException ex) {
208201
HMSLogger.getInstance(weakContext.get())
209-
.sendSingleEvent("enableLogWithLevel", "Invalid log level. level = " + level);
202+
.sendSingleEvent("enableLogWithLevel", "Invalid log level. level = " + level);
210203

211204
result.error("INVALID_PARAM", "Invalid log level. level = " + level, null);
212205
return;
@@ -225,6 +218,41 @@ public void disableLogger(Result result) {
225218
HMSLogger.getInstance(weakContext.get()).disableLogger();
226219
result.success(null);
227220
}
221+
222+
public void setChannel(MethodCall methodCall, Result result) {
223+
String channel = MapUtils.getString("channel", methodCall.argument("channel"));
224+
viewModel.setChannel(channel);
225+
result.success(null);
226+
}
227+
228+
public void setPropertyCollection(MethodCall methodCall, Result result) {
229+
String property = MapUtils.getString("property", methodCall.argument("property"));
230+
boolean enabled = MapUtils.toBoolean("enabled", methodCall.argument("enabled"));
231+
viewModel.setPropertyCollection(property, enabled);
232+
result.success(null);
233+
}
234+
235+
public void setCustomReferrer(MethodCall methodCall, Result result) {
236+
String customReferrer = MapUtils.getString("customReferrer", methodCall.argument("customReferrer"));
237+
viewModel.setCustomReferrer(customReferrer);
238+
result.success(null);
239+
}
240+
241+
public void getInstance(MethodCall methodCall, Result result) {
242+
// HiAnalytics instance
243+
HiAnalyticsInstance analyticsInstance;
244+
245+
String routePolicy = MapUtils.getString("routePolicy", methodCall.argument("routePolicy"));
246+
247+
if (!routePolicy.equals("")) {
248+
analyticsInstance = HiAnalytics.getInstance((getContext()), routePolicy);
249+
} else {
250+
analyticsInstance = HiAnalytics.getInstance(getContext());
251+
}
252+
viewModel = new HMSAnalyticsViewModel(getContext(), analyticsInstance);
253+
result.success(null);
254+
}
255+
228256
/* Private Inner Class */
229257

230258
private Set<ReportPolicy> mapToSetReportPolicy(Map<String, Object> reportPolicies) {
@@ -288,7 +316,7 @@ private enum LogLevel {
288316
* HMSAnalyticsContract.ResultListener}.
289317
*/
290318
private static final class HMSAnalyticsResultHandler<Object>
291-
implements HMSAnalyticsContract.ResultListener<Object> {
319+
implements HMSAnalyticsContract.ResultListener<Object> {
292320
private Result mResult;
293321
private String mMethodName;
294322
private WeakReference<Context> mWeakContext;

Diff for: flutter-hms-analytics/android/src/main/java/com/huawei/hms/flutter/analytics/handler/HMSAnalyticsMethodCallHandler.java

+38-5
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,8 @@
3232

3333
public class HMSAnalyticsMethodCallHandler implements MethodCallHandler {
3434
private static final String TAG = HMSAnalyticsMethodCallHandler.class.getSimpleName();
35-
private final HMSAnalyticsModule analyticsModule;
36-
35+
private HMSAnalyticsModule analyticsModule;
36+
3737
// Weak Context Instance
3838
private final WeakReference<Context> weakContext;
3939

@@ -42,10 +42,18 @@ public HMSAnalyticsMethodCallHandler(HMSAnalyticsModule module, WeakReference<Co
4242
this.weakContext = weakContext;
4343
}
4444

45+
public HMSAnalyticsMethodCallHandler(WeakReference<Context> weakContext) {
46+
this.weakContext = weakContext;
47+
}
48+
4549
@Override
4650
public void onMethodCall(@NonNull MethodCall methodCall, @NonNull Result result) {
4751
Log.i(TAG, " Running method : " + methodCall.method);
4852
HMSLogger.getInstance(weakContext.get()).startMethodExecutionTimer(methodCall.method);
53+
54+
if (analyticsModule == null) {
55+
analyticsModule = new HMSAnalyticsModule(weakContext);
56+
}
4957
switch (Methods.valueOf(methodCall.method)) {
5058
case clearCachedData:
5159
analyticsModule.clearCachedData(result);
@@ -71,15 +79,13 @@ public void onMethodCall(@NonNull MethodCall methodCall, @NonNull Result result)
7179
break;
7280
case setMinActivitySessions:
7381
analyticsModule.setMinActivitySessions(methodCall, result);
74-
HMSLogger.getInstance(weakContext.get()).sendSingleEvent(methodCall.method);
7582
break;
7683
case setPushToken:
7784
analyticsModule.setPushToken(methodCall, result);
7885
HMSLogger.getInstance(weakContext.get()).sendSingleEvent(methodCall.method);
7986
break;
8087
case setSessionDuration:
8188
analyticsModule.setSessionDuration(methodCall, result);
82-
HMSLogger.getInstance(weakContext.get()).sendSingleEvent(methodCall.method);
8389
break;
8490
case setUserId:
8591
analyticsModule.setUserId(methodCall, result);
@@ -99,6 +105,7 @@ public void onMethodCall(@NonNull MethodCall methodCall, @NonNull Result result)
99105
break;
100106
case enableLogWithLevel:
101107
analyticsModule.enableLogWithLevel(methodCall, result);
108+
HMSLogger.getInstance(weakContext.get()).sendSingleEvent(methodCall.method);
102109
break;
103110
case enableLogger:
104111
analyticsModule.enableLogger(result);
@@ -111,24 +118,46 @@ public void onMethodCall(@NonNull MethodCall methodCall, @NonNull Result result)
111118
break;
112119
case setReportPolicies:
113120
analyticsModule.setReportPolicies(methodCall, result);
121+
HMSLogger.getInstance(weakContext.get()).sendSingleEvent(methodCall.method);
114122
break;
115123
case setRestrictionEnabled:
116124
analyticsModule.setRestrictionEnabled(methodCall, result);
125+
HMSLogger.getInstance(weakContext.get()).sendSingleEvent(methodCall.method);
117126
break;
118127
case isRestrictionEnabled:
119128
analyticsModule.isRestrictionEnabled(result);
120129
break;
121130
case setCollectAdsIdEnabled:
122131
analyticsModule.setCollectAdsIdEnabled(methodCall, result);
132+
HMSLogger.getInstance(weakContext.get()).sendSingleEvent(methodCall.method);
123133
break;
124134
case addDefaultEventParams:
125135
analyticsModule.addDefaultEventParams(methodCall, result);
136+
HMSLogger.getInstance(weakContext.get()).sendSingleEvent(methodCall.method);
126137
break;
127138
case deleteUserProfile:
128139
analyticsModule.deleteUserProfile(methodCall, result);
140+
HMSLogger.getInstance(weakContext.get()).sendSingleEvent(methodCall.method);
129141
break;
130142
case deleteUserId:
131143
analyticsModule.deleteUserId(result);
144+
HMSLogger.getInstance(weakContext.get()).sendSingleEvent(methodCall.method);
145+
break;
146+
case setChannel:
147+
analyticsModule.setChannel(methodCall, result);
148+
HMSLogger.getInstance(weakContext.get()).sendSingleEvent(methodCall.method);
149+
break;
150+
case setPropertyCollection:
151+
analyticsModule.setPropertyCollection(methodCall, result);
152+
HMSLogger.getInstance(weakContext.get()).sendSingleEvent(methodCall.method);
153+
break;
154+
case setCustomReferrer:
155+
analyticsModule.setCustomReferrer(methodCall, result);
156+
HMSLogger.getInstance(weakContext.get()).sendSingleEvent(methodCall.method);
157+
break;
158+
case getInstance:
159+
analyticsModule.getInstance(methodCall, result);
160+
HMSLogger.getInstance(weakContext.get()).sendSingleEvent(methodCall.method);
132161
break;
133162
default:
134163
result.error("platformError", "Not supported on Android platform", "");
@@ -159,6 +188,10 @@ private enum Methods {
159188
setCollectAdsIdEnabled,
160189
addDefaultEventParams,
161190
deleteUserProfile,
162-
deleteUserId
191+
deleteUserId,
192+
setChannel,
193+
setPropertyCollection,
194+
setCustomReferrer,
195+
getInstance
163196
}
164197
}

Diff for: flutter-hms-analytics/android/src/main/java/com/huawei/hms/flutter/analytics/logger/HMSLogger.java

+4-7
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ public final class HMSLogger {
3838

3939
private static final String KIT = "Analytics";
4040
private static final String PLATFORM = "Flutter";
41-
private static final String VERSION = "6.2.0.302";
41+
private static final String VERSION = "6.5.0.300";
4242

4343
private static final String SERVICE = "Cross-Platform";
4444

@@ -77,8 +77,7 @@ public final class HMSLogger {
7777
private HMSLogger(final Context context) {
7878
weakContext = new WeakReference<>(context);
7979
hiAnalyticsUtils = HiAnalyticsUtils.getInstance();
80-
connectivityManager = objectCast(context.getSystemService(Context.CONNECTIVITY_SERVICE),
81-
ConnectivityManager.class);
80+
connectivityManager = objectCast(context.getSystemService(Context.CONNECTIVITY_SERVICE), ConnectivityManager.class);
8281

8382
hiAnalyticsUtils.enableLog();
8483
HMSBIInitializer.getInstance(context).initBI();
@@ -279,8 +278,7 @@ private synchronized void setupEventMap(final Map<String, Object> map) {
279278
* @param resultCode Code of the method's result. "0" for success, others for error
280279
* @param currentTime Current timestamp in millisecond
281280
*/
282-
private synchronized void putToSingleEventMap(final String methodName, final String resultCode,
283-
final long currentTime) {
281+
private synchronized void putToSingleEventMap(final String methodName, final String resultCode, final long currentTime) {
284282
final long startTime = getOrDefault(startTimeMap, methodName, currentTime);
285283
final int costTime = (int) (currentTime - startTime);
286284
singleEventMap.put("apiName", methodName);
@@ -297,8 +295,7 @@ private synchronized void putToSingleEventMap(final String methodName, final Str
297295
* @param resultCode Code of the method's result. "0" for success, others for error
298296
* @param currentTime Current timestamp in millisecond
299297
*/
300-
private synchronized void putToPeriodicEventMap(final String methodName, final String resultCode,
301-
final long currentTime) {
298+
private synchronized void putToPeriodicEventMap(final String methodName, final String resultCode, final long currentTime) {
302299
increaseResultCodeCount(methodName, resultCode);
303300
increaseMapValue(methodName, allCountMap);
304301

0 commit comments

Comments
 (0)