跳到主要内容

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服务中配置您的项目。

  1. 在Firebase Console创建一个新项目。
  2. 在Firebase Console选择您计划集成推送通知的项目。
  3. 在左侧菜单,项目名称旁边,点击齿轮图标并进入Project Settings部分。
  4. 转到Your apps部分并下载google-services.json文件。
  5. 将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服务中配置您的项目。

  1. developer.huawei.com创建一个新项目。
  2. 在AppGallery Connect中选择您计划集成推送通知的项目。
  3. 转到项目设置页面,然后转到基本信息选项卡。
  4. 转到应用程序数据部分并下载agconnect-services.json文件。
  5. 将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)    \`\`}}