Skip to content

Commit 340a92c

Browse files
committed
UPDATE Push plugin to 5.1.1+301
1 parent 2ef5854 commit 340a92c

File tree

68 files changed

+2101
-1282
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

68 files changed

+2101
-1282
lines changed

flutter-hms-push/CHANGELOG.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,13 @@
1+
## 5.1.1+301
2+
* Updated Push SDK to the latest version 5.1.1+301.
3+
* Added Multi-Sender API.
4+
* Bug fixes and improvements.
5+
* **[Breaking Changes]**
6+
* Migrated the plugin to Null-Safety.
7+
* Folder structure updated, all library can be imported with a single line.
8+
* Code constant renamed as ResultCodes.
9+
* Push.deleteToken method's result will not be returned to the stream anymore, it can be obtained directly from the method.
10+
111
## 5.0.2+304
212
* Updated HMSLogger.
313
* Changed lightSettings, vibrateConfig, titleLocalizationArgs and bodyLocalizationArgs fields of RemoteMessageNotification to type List\<dynamic> in order to support parsing for 3rd party integrations.

flutter-hms-push/README.md

Lines changed: 21 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -2,41 +2,48 @@
22
<h1 align="center">Huawei Push Kit Flutter Plugin</h1>
33
</p>
44

5+
6+
7+
<p align="center">
8+
<a href="https://pub.dev/packages/huawei_gameservice"><img src="https://img.shields.io/pub/v/huawei_push?style=for-the-badge" alt="pub.dev version"></a>
9+
</p>
10+
11+
512
----
613

714
HUAWEI Push Kit is a messaging service provided by Huawei. It establishes a messaging channel from the cloud to devices. By integrating Push Kit, you can send messages to your apps on users' devices in real time. This helps you maintain closer ties with users and increases user awareness and engagement with your apps.
815

916
This plugin enables communication between HUAWEI Push Kit SDK and Flutter platform. It exposes all functionality provided by HUAWEI Push Kit SDK.
1017

11-
[> Learn More](https://developer.huawei.com/consumer/en/doc/development/HMSCore-Guides-V5/service-introduction-0000001050040060-V5)
18+
[Learn More](https://developer.huawei.com/consumer/en/doc/development/HMSCore-Guides-V5/service-introduction-0000001050040060-V5?ha_source=hms1)
1219

1320
## Installation
1421

15-
Please see [pub.dev](https://pub.dev/packages/huawei_push/install) and [AppGallery Connect Configuration](https://developer.huawei.com/consumer/en/doc/development/HMS-Plugin-Guides/config-agc-0000001050178043).
22+
Please see [pub.dev](https://pub.dev/packages/huawei_push/install) and [AppGallery Connect Configuration](https://developer.huawei.com/consumer/en/doc/development/HMS-Plugin-Guides/config-agc-0000001050178043?ha_source=hms1).
1623

1724
## Documentation
1825

19-
- [Quick Start](https://developer.huawei.com/consumer/en/doc/development/HMS-Plugin-Guides/basiccapabilities-0000001050417999)
20-
- [Reference](https://developer.huawei.com/consumer/en/doc/development/HMS-Plugin-References/overview-0000001057463088)
26+
- [Quick Start](https://developer.huawei.com/consumer/en/doc/development/HMS-Plugin-Guides/basiccapabilities-0000001050417999?ha_source=hms1)
27+
- [Reference](https://developer.huawei.com/consumer/en/doc/development/HMS-Plugin-References/overview-0000001057463088?ha_source=hms1)
2128

2229
### Additional Topics
23-
- [Basic Capabilities](https://developer.huawei.com/consumer/en/doc/development/HMS-Plugin-Guides/basiccapabilities-0000001050417999)
24-
- [Topic-based Message Sending](https://developer.huawei.com/consumer/en/doc/development/HMS-Plugin-Guides/topicbased-message-0000001050190681)
25-
- [Receiving Data Messages](https://developer.huawei.com/consumer/en/doc/development/HMS-Plugin-Guides/receiving-data-messages-at-killed-state-0000001058199547)
26-
- [Deep Linking with Custom Intent URIs](https://developer.huawei.com/consumer/en/doc/development/HMS-Plugin-Guides/deeplinking-custom-0000001055875857)
27-
- [Obtaining Initial Messages](https://developer.huawei.com/consumer/en/doc/development/HMS-Plugin-Guides/get-initial-notif-0000001056552970)
28-
- [Listening to Message Tap Events](https://developer.huawei.com/consumer/en/doc/development/HMS-Plugin-Guides/listen-notif-message-0000001057481400)
29-
- [Sending Local Notification Messages](https://developer.huawei.com/consumer/en/doc/development/HMS-Plugin-Guides/send-local-notif-0000001057760996)
30-
- [Sending Uplink Messages](https://developer.huawei.com/consumer/en/doc/development/HMS-Plugin-Guides/send-uplink-0000001057200983)
30+
- [Basic Capabilities](https://developer.huawei.com/consumer/en/doc/development/HMS-Plugin-Guides/basiccapabilities-0000001050417999?ha_source=hms1)
31+
- [Topic-based Message Sending](https://developer.huawei.com/consumer/en/doc/development/HMS-Plugin-Guides/topicbased-message-0000001050190681?ha_source=hms1)
32+
- [Receiving Data Messages](https://developer.huawei.com/consumer/en/doc/development/HMS-Plugin-Guides/receiving-data-messages-at-killed-state-0000001058199547?ha_source=hms1)
33+
- [Deep Linking with Custom Intent URIs](https://developer.huawei.com/consumer/en/doc/development/HMS-Plugin-Guides/deeplinking-custom-0000001055875857?ha_source=hms1)
34+
- [Obtaining Initial Messages](https://developer.huawei.com/consumer/en/doc/development/HMS-Plugin-Guides/get-initial-notif-0000001056552970?ha_source=hms1)
35+
- [Listening to Message Tap Events](https://developer.huawei.com/consumer/en/doc/development/HMS-Plugin-Guides/listen-notif-message-0000001057481400?ha_source=hms1)
36+
- [Sending Local Notification Messages](https://developer.huawei.com/consumer/en/doc/development/HMS-Plugin-Guides/send-local-notif-0000001057760996?ha_source=hms1)
37+
- [Sending Uplink Messages](https://developer.huawei.com/consumer/en/doc/development/HMS-Plugin-Guides/send-uplink-0000001057200983?ha_source=hms1)
3138

3239
## Questions or Issues
3340

3441
If you have questions about how to use HMS samples, try the following options:
3542
- [Stack Overflow](https://stackoverflow.com/questions/tagged/huawei-mobile-services) is the best place for any programming questions. Be sure to tag your question with
3643
**huawei-mobile-services**.
3744
- [Github](https://github.com/HMS-Core/hms-flutter-plugin) is the official repository for these plugins, You can open an issue or submit your ideas.
38-
- [Huawei Developer Forum](https://forums.developer.huawei.com/forumPortal/en/home?fid=0101187876626530001) HMS Core Module is great for general questions, or seeking recommendations and opinions.
39-
- [Huawei Developer Docs](https://developer.huawei.com/consumer/en/doc/overview/HMS-Core-Plugin) is place to official documentation for all HMS Core Kits, you can find detailed documentations in there.
45+
- [Huawei Developer Forum](https://forums.developer.huawei.com/forumPortal/en/home?fid=0101187876626530001?ha_source=hms1) HMS Core Module is great for general questions, or seeking recommendations and opinions.
46+
- [Huawei Developer Docs](https://developer.huawei.com/consumer/en/doc/overview/HMS-Core-Plugin?ha_source=hms1) is place to official documentation for all HMS Core Kits, you can find detailed documentations in there.
4047

4148
If you run into a bug in our samples, please submit an issue to the [GitHub repository](https://github.com/HMS-Core/hms-flutter-plugin).
4249

flutter-hms-push/android/build.gradle

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ android {
4040
}
4141

4242
dependencies {
43-
implementation 'com.huawei.hms:push:5.0.2.300'
43+
implementation 'com.huawei.hms:push:5.1.1.301'
44+
implementation 'com.huawei.hms:push-fcm:5.1.1.301'
4445
implementation 'com.facebook.fresco:fresco:2.2.0'
4546
}
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
distributionBase=GRADLE_USER_HOME
22
distributionPath=wrapper/dists
3-
distributionUrl=https\://services.gradle.org/distributions/gradle-6.3-bin.zip
3+
distributionUrl=https\://services.gradle.org/distributions/gradle-6.8.3-bin.zip
44
zipStoreBase=GRADLE_USER_HOME
55
zipStorePath=wrapper/dists

flutter-hms-push/android/gradlew

Lines changed: 33 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,21 @@
11
#!/usr/bin/env sh
22

3+
#
4+
# Copyright 2015 the original author or authors.
5+
#
6+
# Licensed under the Apache License, Version 2.0 (the "License");
7+
# you may not use this file except in compliance with the License.
8+
# You may obtain a copy of the License at
9+
#
10+
# https://www.apache.org/licenses/LICENSE-2.0
11+
#
12+
# Unless required by applicable law or agreed to in writing, software
13+
# distributed under the License is distributed on an "AS IS" BASIS,
14+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15+
# See the License for the specific language governing permissions and
16+
# limitations under the License.
17+
#
18+
319
##############################################################################
420
##
521
## Gradle start up script for UN*X
@@ -28,7 +44,7 @@ APP_NAME="Gradle"
2844
APP_BASE_NAME=`basename "$0"`
2945

3046
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
31-
DEFAULT_JVM_OPTS=""
47+
DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
3248

3349
# Use the maximum available, or set MAX_FD != -1 to use that value.
3450
MAX_FD="maximum"
@@ -66,6 +82,7 @@ esac
6682

6783
CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
6884

85+
6986
# Determine the Java command to use to start the JVM.
7087
if [ -n "$JAVA_HOME" ] ; then
7188
if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
@@ -109,10 +126,11 @@ if $darwin; then
109126
GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
110127
fi
111128

112-
# For Cygwin, switch paths to Windows format before running java
113-
if $cygwin ; then
129+
# For Cygwin or MSYS, switch paths to Windows format before running java
130+
if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then
114131
APP_HOME=`cygpath --path --mixed "$APP_HOME"`
115132
CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
133+
116134
JAVACMD=`cygpath --unix "$JAVACMD"`
117135

118136
# We build the pattern for arguments to be converted via cygpath
@@ -138,19 +156,19 @@ if $cygwin ; then
138156
else
139157
eval `echo args$i`="\"$arg\""
140158
fi
141-
i=$((i+1))
159+
i=`expr $i + 1`
142160
done
143161
case $i in
144-
(0) set -- ;;
145-
(1) set -- "$args0" ;;
146-
(2) set -- "$args0" "$args1" ;;
147-
(3) set -- "$args0" "$args1" "$args2" ;;
148-
(4) set -- "$args0" "$args1" "$args2" "$args3" ;;
149-
(5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
150-
(6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
151-
(7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
152-
(8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
153-
(9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
162+
0) set -- ;;
163+
1) set -- "$args0" ;;
164+
2) set -- "$args0" "$args1" ;;
165+
3) set -- "$args0" "$args1" "$args2" ;;
166+
4) set -- "$args0" "$args1" "$args2" "$args3" ;;
167+
5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
168+
6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
169+
7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
170+
8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
171+
9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
154172
esac
155173
fi
156174

@@ -159,14 +177,9 @@ save () {
159177
for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
160178
echo " "
161179
}
162-
APP_ARGS=$(save "$@")
180+
APP_ARGS=`save "$@"`
163181

164182
# Collect all arguments for the java command, following the shell quoting and substitution rules
165183
eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
166184

167-
# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong
168-
if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then
169-
cd "$(dirname "$0")"
170-
fi
171-
172185
exec "$JAVACMD" "$@"

flutter-hms-push/android/gradlew.bat

Lines changed: 24 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,19 @@
1+
@rem
2+
@rem Copyright 2015 the original author or authors.
3+
@rem
4+
@rem Licensed under the Apache License, Version 2.0 (the "License");
5+
@rem you may not use this file except in compliance with the License.
6+
@rem You may obtain a copy of the License at
7+
@rem
8+
@rem https://www.apache.org/licenses/LICENSE-2.0
9+
@rem
10+
@rem Unless required by applicable law or agreed to in writing, software
11+
@rem distributed under the License is distributed on an "AS IS" BASIS,
12+
@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
@rem See the License for the specific language governing permissions and
14+
@rem limitations under the License.
15+
@rem
16+
117
@if "%DEBUG%" == "" @echo off
218
@rem ##########################################################################
319
@rem
@@ -13,15 +29,18 @@ if "%DIRNAME%" == "" set DIRNAME=.
1329
set APP_BASE_NAME=%~n0
1430
set APP_HOME=%DIRNAME%
1531

32+
@rem Resolve any "." and ".." in APP_HOME to make it shorter.
33+
for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi
34+
1635
@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
17-
set DEFAULT_JVM_OPTS=
36+
set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
1837

1938
@rem Find java.exe
2039
if defined JAVA_HOME goto findJavaFromJavaHome
2140

2241
set JAVA_EXE=java.exe
2342
%JAVA_EXE% -version >NUL 2>&1
24-
if "%ERRORLEVEL%" == "0" goto init
43+
if "%ERRORLEVEL%" == "0" goto execute
2544

2645
echo.
2746
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
@@ -35,7 +54,7 @@ goto fail
3554
set JAVA_HOME=%JAVA_HOME:"=%
3655
set JAVA_EXE=%JAVA_HOME%/bin/java.exe
3756

38-
if exist "%JAVA_EXE%" goto init
57+
if exist "%JAVA_EXE%" goto execute
3958

4059
echo.
4160
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
@@ -45,28 +64,14 @@ echo location of your Java installation.
4564

4665
goto fail
4766

48-
:init
49-
@rem Get command-line arguments, handling Windows variants
50-
51-
if not "%OS%" == "Windows_NT" goto win9xME_args
52-
53-
:win9xME_args
54-
@rem Slurp the command line arguments.
55-
set CMD_LINE_ARGS=
56-
set _SKIP=2
57-
58-
:win9xME_args_slurp
59-
if "x%~1" == "x" goto execute
60-
61-
set CMD_LINE_ARGS=%*
62-
6367
:execute
6468
@rem Setup the command line
6569

6670
set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
6771

72+
6873
@rem Execute Gradle
69-
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
74+
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %*
7075

7176
:end
7277
@rem End local scope for the variables with windows NT shell

flutter-hms-push/android/src/main/java/com/huawei/hms/flutter/push/HeadlessPushPlugin.java

Lines changed: 15 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -27,10 +27,6 @@
2727
import com.huawei.hms.flutter.push.utils.RemoteMessageUtils;
2828
import com.huawei.hms.push.RemoteMessage;
2929

30-
import java.util.Arrays;
31-
import java.util.List;
32-
import java.util.concurrent.atomic.AtomicBoolean;
33-
3430
import io.flutter.plugin.common.MethodCall;
3531
import io.flutter.plugin.common.MethodChannel;
3632
import io.flutter.plugin.common.PluginRegistry;
@@ -39,25 +35,30 @@
3935
import io.flutter.view.FlutterNativeView;
4036
import io.flutter.view.FlutterRunArguments;
4137

38+
import java.util.Arrays;
39+
import java.util.List;
40+
import java.util.concurrent.atomic.AtomicBoolean;
41+
4242
public class HeadlessPushPlugin implements MethodChannel.MethodCallHandler {
4343
private static final String TAG = HeadlessPushPlugin.class.getSimpleName();
4444

45-
public final static String KEY_HANDLER = "push_background_message_handler";
46-
public final static String KEY_CALLBACK = "push_background_message_callback";
45+
public static final String KEY_HANDLER = "push_background_message_handler";
46+
47+
public static final String KEY_CALLBACK = "push_background_message_callback";
4748

48-
private static MethodChannel methodBackgroundChannel;
4949
private static PluginRegistry.PluginRegistrantCallback pluginRegistrantCallback;
5050

51+
private MethodChannel methodBackgroundChannel;
52+
5153
private Context context;
5254

53-
private static FlutterNativeView flutterNativeView;
55+
private FlutterNativeView flutterNativeView;
5456

5557
private static final AtomicBoolean SYNCHRONIZER = new AtomicBoolean(false);
5658

5759
public HeadlessPushPlugin(Context context) {
5860
this.context = context;
59-
if (flutterNativeView == null)
60-
initFlutterNativeView();
61+
initFlutterNativeView();
6162

6263
// Queue events while background isolate is starting
6364
waitFlutterNativeView();
@@ -86,7 +87,6 @@ static void setPluginRegistrant(PluginRegistry.PluginRegistrantCallback callback
8687
pluginRegistrantCallback = callback;
8788
}
8889

89-
9090
public void handleBackgroundMessage(Context context, RemoteMessage remoteMessage) {
9191

9292
SharedPreferences prefs = context.getSharedPreferences(Core.PREFERENCE_NAME, Context.MODE_PRIVATE);
@@ -106,24 +106,19 @@ private void initFlutterNativeView() {
106106
FlutterMain.ensureInitializationComplete(context, null);
107107

108108
SharedPreferences prefs = context.getSharedPreferences(Core.PREFERENCE_NAME, Context.MODE_PRIVATE);
109-
Long mCallbackHandle = prefs.getLong(KEY_HANDLER, -1);
109+
long mCallbackHandle = prefs.getLong(KEY_HANDLER, -1);
110110

111-
FlutterCallbackInformation callbackInfo = FlutterCallbackInformation
112-
.lookupCallbackInformation(mCallbackHandle);
113-
114-
if (callbackInfo == null) {
115-
Log.e(TAG, "ERROR : failed to find callback");
116-
return;
117-
}
111+
FlutterCallbackInformation callbackInfo = FlutterCallbackInformation.lookupCallbackInformation(mCallbackHandle);
118112

119113
flutterNativeView = new FlutterNativeView(context.getApplicationContext(), true);
120114

121115
// Create the Transmitter Channel
122116
methodBackgroundChannel = new MethodChannel(flutterNativeView, Channel.BACKGROUND_MESSAGE_CHANNEL.id());
123117
methodBackgroundChannel.setMethodCallHandler(this);
124118

125-
if (pluginRegistrantCallback == null)
119+
if (pluginRegistrantCallback == null) {
126120
return;
121+
}
127122

128123
pluginRegistrantCallback.registerWith(flutterNativeView.getPluginRegistry());
129124

0 commit comments

Comments
 (0)