Flutter Push 通知 SDK(版本 1.0.0)
以下是 push 通知的工作条件。
重要
- 应用程序不同类型版本(debug、release 等)的签名和包名(package name)可能互不相同。 在这种情况下,您必须在 RuStore 控制台 的“推送通知 > 项目”部分为每种版本类型创建一个项目。。
- 正在使用最新版本的 SDK。
- 已在 RuStore 控制台 的“推送通知 > 项目”部分上传应用程序数据。
用户设备上已安装分发应用(如 RuStore 等)
若要检查分发应用程序是否已安装在用户设备上,请使用RuStorePushClient.checkPushAvailability方法。。- 如果安装了 RuStore 应用程序,则允许其在后台模式下运行。 如果没有此权限,推送通知仍会送达,但会有明显的延迟。
- 设备上安装的应用程序签名指纹与 RuStore 控制台 的“推送通知 > 项目”部分中添加的应用程序签名指纹一致。
实现示例
请参阅 示例应用程序,以了解如何正确集成推送通知 SDK。
连接到项目
请执行以下命令将软件包连接到项目。
flutter pub add flutter_rustore_push
该命令将在 pubspec.yaml 文件中添加一行。
pubspec.yaml
dependencies:
flutter_rustore_push: ^1.0.0
初始化
初始化需要 来自 RuStore 控制台 的项目 ID。 要获取该 ID,请在应用程序页面中转到 推送通知 > 项目 部分,并复制 项目 ID 字段中的值。
请注意
请注意,Push SDK 不支持在多个进程中同时运行。
如果您的应用程序使用多个进程,则必须仅在主进程中初始化 SDK。
如果在辅助进程中进行初始化,可能会导致 push 通知工作异常。
若要初始化推送通知服务,请在 Android 项目的 values 中添加一个值。
<resources>
<string name= "flutter_rustore_push_project" translatable= "false">xxx</string>
</resources>
xxx — 来自 RuStore 控制台 的项目 ID。 要获取该 ID,请在应用程序页面中转到 推送通知 > 项目 部分,并复制 项目 ID 字段中的值。
若要启动推送通知服务,请添加一个继承自 FlutterRustoreApplication 的 Application 类。
以下是使用 Kotlin 实现的示例。
package ru.rustore.flutter_rustore_push_example
import ru.rustore.flutter_rustore_push.FlutterRustoreApplication
open class Application: FlutterRustoreApplication() {
}
请在 AndroidManifest.xml 中指定该类。
AndroidManifest.xml
<application
android:label= "flutter_rustore_push_example"
android:name= ".Application"
android:icon= "@mipmap/ic_launcher">
// ...
</application>
ProGuard 设置
若要配置 ProGuard,请添加以下规则。
-keep public class com.vk.push.** extends android.os.Parcelable
在 android/app/build.gradle 文件中添加以下行。
android/app/build.gradle
buildTypes {
release {
// ...
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
检查接收推送通知的能力
若要检查分发应用程序是否已安装在用户设备上,请使用RustorePushClient.available() 方法。
RustorePushClient.available().then((value) {
print("available success: ${value}");
}, onError: (err) {
print("available error: ${err}");
}
);
Push 令牌操作方法
获取用户的 Push 令牌
警告
如果用户没有 push 令牌,该方法将创建并返回一个新的 push 令牌。
RuStorePushClient.getToken() 方法来获取当前用户的 push 令牌。
RustorePushClient.getToken().then((value) {
print("get token success: ${value}" );
}, onError: (err) {
print("get token error: ${err}" );
}
);
删除用户的 Push 令牌
在初始化库之后,您可以使用RuStorePushClient.deleteToken() 方法来删除当前用户的 push 令牌。
RustorePushClient.deleteToken().then(() {
print( "delete success:" );
}, onError: (err) {
print( "delete error: ${err}" );
}
);
push 令牌变更事件
有时旧令牌会失效,可能会重新颁发。
要获知新令牌(token)已签发,请使用回调 onNewToken。
onNewToken((value) {
print("on new token success: ${value}");
}