1.0.0
该门户网站正在开发中。文档的完整版本请看这里.
RuStore SDK用于通用推送通知 - 一套用于处理推送通知的包。通过多个渠道发送和接收消息:
FCM
- FirebaseCloudMessaging;HMS
- HuaweiMobileServices;- RuStore.
SDK与已配置的HMS和FCM服务一起使用。
实现示例
查看示例应用程序,了解如何正确集成通用推送通知。
推送通知的运行条件
为了通用推送通知运作,需要遵守以下条件:
- 用户的设备上必须安装 RuStore 应用程序。
- RuStore 应用程序必须支持推送通知的功能。
- RuStore 应用程序应允许在后台模式下运行。
- 用户必须在 RuStore 应用程序中获得授权。
- 应用程序的签名指纹必须与开发者控制台中添加的指纹匹配。
应用程序设置
要进行初始化,需要在"RuStore 控制台"获取项目ID。在应用程序页面,进入"推送通知"部分并选择"项目"。
在项目中集成
在settings.gradle文件中集成存储库:
dependencyResolutionManagement {
repositories {
google()
mavenCentral()
maven {url = uri("https://developer.huawei.com/repo/")}
maven {
url = uri("https://artifactory-external.vkpartner.ru/artifactory/maven")
}
}
}
集成依赖项
要集成依赖项,请在您的app级别的build.gradle文件中添加以下代码:
dependencies {
implementation 'ru.rustore.sdk:universalpush:1.0.0'
implementation 'ru.rustore.sdk:universalrustore:1.0.0'
implementation 'ru.rustore.sdk:universalhms:1.0.0'
implementation 'ru.rustore.sdk:universalfcm:1.0.0'
}
您在应用程序中一起使用RuStore Push SDK和ProGuard时,请添加以下规则:
仅对ru.rustore.sdk:universalrustore包的运作是必需的。
使用FCM和HMS需:
- 在app级别的 build.gradle 中添加app
plugins {
// ...
// нужно для FCM
id 'com.google.gms.google-services'
// нужно для HMS
id 'com.huawei.agconnect'
}
在根级别的build.gradle中添加
dependencies {
// нужно для FCM
classpath 'com.google.gms:google-services:4.3.15'
// нужно для HMS
classpath 'com.huawei.agconnect:agcp:1.6.0.300'
classpath 'com.android.tools.build:gradle:7.4.0'
在根级别的settings.gradle中添加
pluginManagement {
repositories {
google()
mavenCentral()
gradlePluginPortal()
// нужно для работы HMS
maven {url = uri("https://developer.huawei.com/repo/")}
}
}
Google Play
应用程序设置
要在Google Play上发布应用程序,您只需添加通过FCM和RuStore进行推送的依赖项。要开始使用FCM,请在Firebase服务中配置您的项目。
- 在Firebase Console创建一个新项目。
- 在Firebase Console选择您计划集成推送通知的项目。
- 在左侧菜单,项目名称旁边,点击齿轮图标并进入Project Settings部分。
- 转到Your apps部分并下载google-services.json文件。
- 将google-services.json文件放置在app/google-services.json。
在项目中集成
要在Goole Play上发布应用程序,您只需使用universalfcm、universalrustore和universalpush包。
在根级别的settings.gradle中集成存储库:
dependencyResolutionManagement {
repositories {
google()
mavenCentral()
// нужно для работы RuStore
maven {
url = uri("https://artifactory-external.vkpartner.ru/artifactory/maven")
}
}
}
集成依赖项
要集成依赖项,请在您的build.gradle级别的app文件中添加以下代码:
dependencies {
implementation 'ru.rustore.sdk:universalpush:1.0.0'
implementation 'ru.rustore.sdk:universalrustore:1.0.0'
implementation 'ru.rustore.sdk:universalfcm:1.0.0'
}
您的应用程序中使用SDK时,如果一起使用ProGuard,请添加以下规则:
plugins {
// ...
id 'com.google.gms.google-services'
}
使用FCM,需要:
- 在app级别的 build.gradle 中添加app
buildscript {
dependencies {
// нужно для FCM
classpath 'com.google.gms:google-services:4.3.15'
}
}
Huawei Mobile Services
应用程序设置
要在AppGallery中发布应用程序,只需添加依赖项以通过HMS和RuStore进行推送运作。为了开始与HMS运作,您需要在developer.huawei.com服务中配置您的项目。
- 在developer.huawei.com创建一个新项目。
- 在AppGallery Connect中选择您计划集成推送通知的项目。
- 转到项目设置页面,然后转到基本信息选项卡。
- 转到应用程序数据部分并下载agconnect-services.json文件。
- 将agconnect-services.json文件放在app/agconnect-services.json中。
在项目中集成
要在AppGallery中发布应用程序,您只需使用universalhms、universalrustore和universalpush包。
在settings.gradle文件中集成仓库:
dependencyResolutionManagement {
repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
repositories {
google()
mavenCentral()
// нужно для работы HMS
maven {url = uri("https://developer.huawei.com/repo/")}
// нужно для работы RuStore
maven {
url = uri("https://artifactory-external.vkpartner.ru/artifactory/maven")
}
}
}
集成依赖项
要集成依赖项,请在您的build.gradle级别的app文件中添加以下代码:
dependencies {
implementation 'ru.rustore.sdk:universalpush:1.0.0'
implementation 'ru.rustore.sdk:universalrustore:1.0.0'
implementation 'ru.rustore.sdk:universalhms:1.0.0'
}
您的应用程序中使用SDK时,如果一起使用ProGuard,请添加以下规则:
plugins {
// ...
id 'com.huawei.agconnect'
}
使用HMS,需要:
- 在app级别的 build.gradle 中添加app
dependencies {
implementation 'ru.rustore.sdk:universalpush:1.0.0'
implementation 'ru.rustore.sdk:universalrustore:1.0.0'
implementation 'ru.rustore.sdk:universalhms:1.0.0'
}
在根级别的build.gradle中添加
plugins {
// ...
id 'com.huawei.agconnect'
}
在根级别的settings.gradle中添加
pluginManagement {
repositories {
google()
mavenCentral()
gradlePluginPortal()
// нужно для работы HMS
maven {url = uri("https://developer.huawei.com/repo/")}
}
}
初始化
要进行初始化,需要在App.kt文件中写入以下代码:
import android.app.Application
import ru.rustore.sdk.universalpush.RuStoreUniversalPushClient
import ru.rustore.sdk.universalpush.firebase.provides.FirebasePushProvider
import ru.rustore.sdk.universalpush.hms.providers.HmsPushProvider
import ru.rustore.sdk.universalpush.rustore.logger.DefaultLogger
import ru.rustore.sdk.universalpush.rustore.providers.RuStorePushProvider
class App: Application() {
private val tag = "UniversalPushExampleApp"
override fun onCreate() {
super.onCreate()
RuStoreUniversalPushClient.init(
context = this,
rustore = RuStorePushProvider(
application = this,
projectId = "m3Id6aPeXq36mp...",
logger = DefaultLogger(tag = tag),
),
firebase = FirebasePushProvider(
context = this,
),
hms = HmsPushProvider(
context = this,
appid = "108003365",
),
)
}
}
果您只使用几个推送通知提供商,那么您只需初始化所使用的提供商。
RuStoreUniversalPushClient.init( \`\`context = this, \`\`rustore = RuStorePushProvider( \`\`application = this, \`\`projectId = \"m3Id6aPeXq36mp\...\" , \`\`logger = DefaultLogger(tag = tag), \`\`), \`\`hms = HmsPushProvider( \`\`context = this, \`\`appid = \"108003365\" , \`\`),)
检查推送通知的工作能力
要检查推送通知提供商的可用性,需要调用方法checkAvailability (context)。
RuStoreUniversalPushClient.checkAvailability(this) \`\`.addOnCompleteListener(object : OnCompleteListener\<Map\<String, Boolean\>\> { \`\`override fun onSuccess(result: Map\<String, Boolean\>) { \`\`Log.w(tag, \"get availability success \${result}\" ) \`\`} \`\`override fun onFailure(throwable: Throwable) { \`\`Log.e(tag, \"get tokens err: \${throwable}\" ) \`\`} \`\`})
result - 这是一个带有键的字典:
public const val UNIVERSAL_FCM_PROVIDER: String = \"firebase\"public const val UNIVERSAL_HMS_PROVIDER: String = \"hms\"public const val UNIVERSAL_RUSTORE_PROVIDER: String = \"rustore\"
可以这样检查特定推送通知提供商的可用性:
if (result\[UNIVERSAL_HMS_PROVIDER\] ?: false ) { \`\`// hms提供商可用
处理令牌
获取令牌
为了获取所有提供商的令牌列表,需要调用getTokens()方法。
RuStoreUniversalPushClient.getTokens() \`\`.addOnCompleteListener(object : OnCompleteListener\<Map\<String, Boolean\>\> { \`\`override fun onSuccess(result: Map\<String, Boolean\>) { \`\`Log.w(tag, \"get availability success \${result}\" ) \`\`} \`\`override fun onFailure(throwable: Throwable) { \`\`Log.e(tag, \"get tokens err: \${throwable}\" ) \`\`} \`\`})
result - 这是一个带有键的字典:
public const val UNIVERSAL_FCM_PROVIDER: String = \"firebase\"public const val UNIVERSAL_HMS_PROVIDER: String = \"hms\"public const val UNIVERSAL_RUSTORE_PROVIDER: String = \"rustore\"
获取特定令牌,请使用以下代码:
result\[UNIVERSAL_FCM_PROVIDER\].orEmpty()
删除令牌
要删除令牌,需要调用deleteTokens(token)方法并传递含有令牌列表的字典。
RuStoreUniversalPushClient.deleteTokens( \`\`mapOf( \`\`UNIVERSAL_RUSTORE_PROVIDER to \"xxx\" , \`\`UNIVERSAL_FCM_PROVIDER to \"yyy\" , \`\`UNIVERSAL_HMS_PROVIDER to \"zzz\" \`\`))
中xxx, yyy, zzz - 是来自不同推送通知提供商的令牌。
处理主题
订阅主题
要订阅主题,需要调用subscribeToTopic("topic")方法。
RuStoreUniversalPushClient.subscribeToTopic(\"some_topic\")
取消订阅主题
要取消订阅主题,需要调用unsubscribeToTopic("topic")方法。
RuStoreUniversalPushClient.unsubscribeFromTopic(\"some_topic\")\<br\>
事件处理
事件处理onDeletedMessages
为了处理onDeletedMessages事件,您需要在初始化RuStoreUniversalPushClient后在App类中添加OnDeletedMessagesListener回调。在onDeletedMessages事件发生时,将调用带有providerType参数的回调,该参数可帮助您了解触发事件的推送提供商。
RuStoreUniversalPushClient.setOnDeletedMessagesListener { providerType -\> \`\`// process event}
事件处理onNewToken
为了处理onNewToken事件,您需要在初始化RuStoreUniversalPushClient后在App类中添加OnNewTokenListener回调。在onNewToken事件发生时,将调用具有以下参数的回调:
providerType
- 用于识别触发事件的推送提供商。token
- 新的推送令牌。
RuStoreUniversalPushClient.setOnNewTokenListener { providerType, token -\> \`\`// process event}
处理通知
为了接收通知,您需要在初始化RuStoreUniversalPushClient之后在App类中添加OnMessageReceiveListener回调。如果通知是通过universal api发送的,则它们将在客户端进行去重,通知接收回调将被调用1次。
如果notification对象中有数据,RuStoreSDK将自动显示通知。如果您不希望RuStoreSDK自动显示通知,应使用data对象,并保留notification对象为空。但是,无论如何都会调用OnMessageReceiveListener回调。可以从remoteMessage.data字段获取推送通知的payload(Map<String, String>)。
RuStoreUniversalPushClient.setOnMessageReceiveListener { remoteMessage -\> \`\`// process message}
处理推送提供商的错误
为了处理错误,您需要在初始化RuStoreUniversalPushClient后在App类中添加OnPushClientErrorListener回调。出现错误时,将调用带有参数的回调:
providerType
- 用于识别触发事件的推送提供商。errors
- 错误列表。
RuStoreUniversalPushClient.setOnPushClientErrorListener { providerType, error -\> \`\`// process error}
如果已经在使用HMS/FCMHMS/FCM
如果您在应用程序中使用FCM/HMS服务,请在这些服务中添加额外代码。
FCM
在FCM服务中添加以下代码:
import ru.rustore.sdk.universalpush.firebase.messaging.toNotificationPayloadclass MyFirebaseMessagingService: FirebaseMessagingService() { \`\`override fun onMessageReceived(message: RemoteMessage) { \`\`super .onMessageReceived(message) \`\`RuStoreUniversalPushManager.processMessage(message.toNotificationPayload()) \`\`} \`\`override fun onNewToken(token: String) { \`\`super .onNewToken(token) \`\`RuStoreUniversalPushManager.processToken(token) \`\`}}
HMS
在HMS服务中添加以下代码:
import ru.rustore.sdk.universalpush.hms.messaging.toNotificationPayloadclass MyMessagePushService: HmsMessageService() { \`\`override fun onMessageReceived(msg: RemoteMessage?) { \`\`super .onMessageReceived(msg) \`\`RuStoreUniversalPushManager.processMessage(msg.toNotificationPayload()) \`\`} \`\`override fun onNewToken(token: String?) { \`\`super .onNewToken(token) \`\`RuStoreUniversalPushManager.processToken(token) \`\`}}