Skip to content

Commit f3fb5b0

Browse files
author
WuWenhui
committed
Android SDK 升级到2.6.2,Android解决特殊情况下拉起没有回调的问题
1 parent c0675b9 commit f3fb5b0

File tree

11 files changed

+139
-101
lines changed

11 files changed

+139
-101
lines changed

.idea/workspace.xml

Lines changed: 6 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

CHANGELOG.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,8 @@
1+
## 2.2.1
2+
Android 更新内容
3+
- 更新 SDK 到 2.6.2
4+
- 解决特殊情况下拉起无回调的问题
5+
16
## 2.2.0
27
Android SDK 更新内容
38
- 优化匹配数据获取,提升参数还原精度

android/src/main/java/io/openinstall/openinstall_flutter_plugin/OpeninstallFlutterPlugin.java

Lines changed: 65 additions & 69 deletions
Original file line numberDiff line numberDiff line change
@@ -31,16 +31,19 @@
3131
/**
3232
* OpeninstallFlutterPlugin
3333
*/
34-
public class OpeninstallFlutterPlugin implements FlutterPlugin, MethodCallHandler, ActivityAware {
34+
public class OpeninstallFlutterPlugin implements FlutterPlugin, MethodCallHandler, ActivityAware, PluginRegistry.NewIntentListener {
3535

3636
private static final String TAG = "OpenInstallPlugin";
3737

38-
private static final String METHOD_CONFIG = "config";
39-
private static final String METHOD_INIT = "init";
38+
@Deprecated
4039
private static final String METHOD_INIT_PERMISSION = "initWithPermission";
40+
@Deprecated
4141
private static final String METHOD_WAKEUP = "registerWakeup";
42-
private static final String METHOD_INSTALL = "getInstall";
42+
43+
private static final String METHOD_CONFIG = "config";
44+
private static final String METHOD_INIT = "init";
4345
private static final String METHOD_INSTALL_RETRY = "getInstallCanRetry";
46+
private static final String METHOD_INSTALL = "getInstall";
4447
private static final String METHOD_REGISTER = "reportRegister";
4548
private static final String METHOD_EFFECT_POINT = "reportEffectPoint";
4649

@@ -67,12 +70,20 @@ public void onAttachedToEngine(@NonNull FlutterPluginBinding binding) {
6770
@Override
6871
public void onAttachedToActivity(@NonNull ActivityPluginBinding binding) {
6972
activityPluginBinding = binding;
70-
activityPluginBinding.addOnNewIntentListener(newIntentListener);
73+
74+
binding.addOnNewIntentListener(this);
75+
wakeup(binding.getActivity().getIntent());
76+
}
77+
78+
@Override
79+
public void onReattachedToActivityForConfigChanges(@NonNull ActivityPluginBinding binding) {
80+
activityPluginBinding = binding;
81+
binding.addOnNewIntentListener(this);
7182
}
7283

7384
@Override
7485
public void onMethodCall(MethodCall call, @NonNull Result result) {
75-
Log.d(TAG, "call method " + call.method);
86+
Log.d(TAG, "invoke " + call.method);
7687
if (METHOD_CONFIG.equalsIgnoreCase(call.method)) {
7788
String oaid = call.argument("oaid");
7889
String gaid = call.argument("gaid");
@@ -86,13 +97,8 @@ public void onMethodCall(MethodCall call, @NonNull Result result) {
8697
init();
8798
result.success("OK");
8899
} else if (METHOD_INIT_PERMISSION.equalsIgnoreCase(call.method)) {
89-
Activity activity = activityPluginBinding.getActivity();
90-
if (activity != null) {
91-
initWithPermission(activity);
92-
} else {
93-
Log.d(TAG, "Activity is null, can't call initWithPermission");
94-
init();
95-
}
100+
alwaysCallback = call.argument("alwaysCallback");
101+
initWithPermission();
96102
result.success("OK");
97103
} else if (METHOD_WAKEUP.equalsIgnoreCase(call.method)) {
98104
result.success("OK");
@@ -158,76 +164,71 @@ private void init() {
158164
if (context != null) {
159165
OpenInstall.init(context, configuration);
160166
initialized = true;
161-
if (intentHolder == null) {
162-
Activity activity = activityPluginBinding.getActivity();
163-
if (activity != null) {
164-
wakeup(activity.getIntent());
165-
}
166-
} else {
167+
if (intentHolder != null) {
167168
wakeup(intentHolder);
168169
intentHolder = null;
169170
}
170171
} else {
171-
Log.d(TAG, "Context is null, can not init OpenInstall");
172+
Log.d(TAG, "Context is null, can't init");
172173
}
173174
}
174175

175-
private void initWithPermission(final Activity activity) {
176+
@Deprecated
177+
private void initWithPermission() {
178+
Activity activity = activityPluginBinding.getActivity();
176179
if (activity == null) {
177-
return;
178-
}
179-
activityPluginBinding.addRequestPermissionsResultListener(permissionsResultListener);
180-
OpenInstall.initWithPermission(activity, configuration, new Runnable() {
181-
@Override
182-
public void run() {
183-
activityPluginBinding.removeRequestPermissionsResultListener(permissionsResultListener);
184-
initialized = true;
185-
if (intentHolder == null) {
186-
wakeup(activity.getIntent());
187-
} else {
188-
wakeup(intentHolder);
189-
intentHolder = null;
190-
}
191-
}
192-
});
193-
194-
}
195-
196-
private final PluginRegistry.NewIntentListener newIntentListener =
197-
new PluginRegistry.NewIntentListener() {
180+
Log.d(TAG, "Activity is null, can't initWithPermission, replace with init");
181+
init();
182+
} else {
183+
activityPluginBinding.addRequestPermissionsResultListener(permissionsResultListener);
184+
OpenInstall.initWithPermission(activity, configuration, new Runnable() {
198185
@Override
199-
public boolean onNewIntent(Intent intent) {
200-
if (initialized) {
201-
wakeup(intent);
202-
} else {
203-
intentHolder = intent;
186+
public void run() {
187+
activityPluginBinding.removeRequestPermissionsResultListener(permissionsResultListener);
188+
initialized = true;
189+
if (intentHolder != null) {
190+
wakeup(intentHolder);
191+
intentHolder = null;
204192
}
205-
return false;
206193
}
207-
};
194+
});
195+
}
196+
}
197+
198+
@Override
199+
public boolean onNewIntent(Intent intent) {
200+
wakeup(intent);
201+
return false;
202+
}
208203

209204

210205
private void wakeup(Intent intent) {
211-
if (alwaysCallback) {
212-
OpenInstall.getWakeUpAlwaysCallback(intent, new AppWakeUpListener() {
213-
@Override
214-
public void onWakeUpFinish(AppData appData, Error error) {
215-
if (error != null) {
216-
Log.d(TAG, "getWakeUpAlwaysCallback : " + error.toString());
206+
if (initialized) {
207+
Log.d(TAG, "getWakeUp : alwaysCallback=" + alwaysCallback);
208+
if (alwaysCallback) {
209+
OpenInstall.getWakeUpAlwaysCallback(intent, new AppWakeUpListener() {
210+
@Override
211+
public void onWakeUpFinish(AppData appData, Error error) {
212+
if (error != null) { // 可忽略,仅调试使用
213+
Log.d(TAG, "getWakeUpAlwaysCallback : " + error.getErrorMsg());
214+
}
215+
channel.invokeMethod(METHOD_WAKEUP_NOTIFICATION, data2Map(appData));
217216
}
218-
channel.invokeMethod(METHOD_WAKEUP_NOTIFICATION, data2Map(appData));
219-
}
220-
});
217+
});
218+
} else {
219+
OpenInstall.getWakeUp(intent, new AppWakeUpAdapter() {
220+
@Override
221+
public void onWakeUp(AppData appData) {
222+
channel.invokeMethod(METHOD_WAKEUP_NOTIFICATION, data2Map(appData));
223+
}
224+
});
225+
}
221226
} else {
222-
OpenInstall.getWakeUp(intent, new AppWakeUpAdapter() {
223-
@Override
224-
public void onWakeUp(AppData appData) {
225-
channel.invokeMethod(METHOD_WAKEUP_NOTIFICATION, data2Map(appData));
226-
}
227-
});
227+
intentHolder = intent;
228228
}
229229
}
230230

231+
@Deprecated
231232
private final PluginRegistry.RequestPermissionsResultListener permissionsResultListener =
232233
new PluginRegistry.RequestPermissionsResultListener() {
233234
@Override
@@ -256,11 +257,6 @@ public void onDetachedFromActivityForConfigChanges() {
256257

257258
}
258259

259-
@Override
260-
public void onReattachedToActivityForConfigChanges(@NonNull ActivityPluginBinding binding) {
261-
262-
}
263-
264260
@Override
265261
public void onDetachedFromActivity() {
266262

example/.flutter-plugins-dependencies

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
{"info":"This is a generated file; do not edit or check into version control.","plugins":{"ios":[{"name":"openinstall_flutter_plugin","path":"D:\\\\workspace\\\\OP\\\\openinstall_flutter_plugin\\\\","dependencies":[]}],"android":[{"name":"openinstall_flutter_plugin","path":"D:\\\\workspace\\\\OP\\\\openinstall_flutter_plugin\\\\","dependencies":[]}],"macos":[],"linux":[],"windows":[],"web":[]},"dependencyGraph":[{"name":"openinstall_flutter_plugin","dependencies":[]}],"date_created":"2021-12-31 11:24:33.077222","version":"2.0.5"}
1+
{"info":"This is a generated file; do not edit or check into version control.","plugins":{"ios":[{"name":"openinstall_flutter_plugin","path":"D:\\\\workspace\\\\OP\\\\openinstall_flutter_plugin\\\\","dependencies":[]}],"android":[{"name":"openinstall_flutter_plugin","path":"D:\\\\workspace\\\\OP\\\\openinstall_flutter_plugin\\\\","dependencies":[]}],"macos":[],"linux":[],"windows":[],"web":[]},"dependencyGraph":[{"name":"openinstall_flutter_plugin","dependencies":[]}],"date_created":"2022-04-08 11:50:22.000328","version":"2.8.1"}

example/android/app/src/main/AndroidManifest.xml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,13 @@
1010
FlutterApplication and put your custom class here. -->
1111
<application
1212
android:icon="@mipmap/ic_launcher"
13+
android:name=".MainApplication"
1314
android:label="openinstall_flutter_plugin_example">
1415
<activity
1516
android:name=".MainActivity"
1617
android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
1718
android:hardwareAccelerated="true"
18-
android:launchMode="singleTop"
19+
android:launchMode="singleTask"
1920
android:theme="@style/LaunchTheme"
2021
android:windowSoftInputMode="adjustResize">
2122
<intent-filter>
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,21 @@
11
package io.openinstall.openinstall_flutter_plugin_example;
22

3+
import android.content.Context;
34
import android.os.Bundle;
5+
6+
import androidx.annotation.NonNull;
7+
import androidx.annotation.Nullable;
8+
49
import io.flutter.embedding.android.FlutterActivity;
10+
import io.flutter.embedding.engine.FlutterEngine;
11+
import io.flutter.embedding.engine.FlutterEngineCache;
512
import io.flutter.plugins.GeneratedPluginRegistrant;
613

714
public class MainActivity extends FlutterActivity {
15+
16+
@Nullable
17+
@Override
18+
public FlutterEngine provideFlutterEngine(@NonNull Context context) {
19+
return FlutterEngineCache.getInstance().get("cache_engine");
20+
}
821
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
package io.openinstall.openinstall_flutter_plugin_example;
2+
3+
import io.flutter.app.FlutterApplication;
4+
import io.flutter.embedding.engine.FlutterEngine;
5+
import io.flutter.embedding.engine.FlutterEngineCache;
6+
7+
public class MainApplication extends FlutterApplication {
8+
9+
@Override
10+
public void onCreate() {
11+
super.onCreate();
12+
FlutterEngineCache.getInstance().put("cache_engine", new FlutterEngine(this));
13+
}
14+
}

example/lib/main.dart

Lines changed: 8 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -29,12 +29,10 @@ class _MyAppState extends State<MyApp> {
2929
if (!mounted) return;
3030

3131
_openinstallFlutterPlugin = new OpeninstallFlutterPlugin();
32-
3332
_openinstallFlutterPlugin.init(wakeupHandler, alwaysCallback: true);
34-
_openinstallFlutterPlugin.getInstallCanRetry(installHandler, 3);
33+
_openinstallFlutterPlugin.install(installHandler);
3534

36-
setState(() {
37-
});
35+
setState(() {});
3836
}
3937

4038
@override
@@ -81,21 +79,18 @@ class _MyAppState extends State<MyApp> {
8179
}
8280

8381
Future installHandler(Map<String, dynamic> data) async {
82+
print("installHandler : " + data.toString());
8483
setState(() {
85-
installLog = "install result : "
86-
"channel=" + data['channelCode'] +
87-
", data=" + data['bindData'].toString() +
88-
", retry=" + data['retry'].toString() +
89-
"\n";
84+
installLog = "install result : channel=" + data['channelCode']
85+
+ ", data=" + data['bindData'].toString() + "\n";
9086
});
9187
}
9288

9389
Future wakeupHandler(Map<String, dynamic> data) async {
90+
print("wakeupHandler : " + data.toString());
9491
setState(() {
95-
wakeUpLog = "wakeup result : "
96-
"channel=" + data['channelCode'] +
97-
", data=" + data['bindData'].toString() +
98-
"\n";
92+
wakeUpLog = "wakeup result : channel=" + data['channelCode']
93+
+ ", data=" + data['bindData'].toString() + "\n";
9994
});
10095
}
10196
}

0 commit comments

Comments
 (0)