0.6.1
该门户网站正在开发中。文档的完整版本请看这里.
为了推送通知的运行,必须遵守以下条件:
- 用户的设备上必须安装 RuStore。
- RuStore 必须支持推送通知功能。
- RuStore 应用程序应允许在后台模式下运行。
- 用户必须在 RuStore 中获得授权。
- 应用程序的签名指纹必须与 RuStore 控制台中添加的指纹匹配。
在项目中集成
要集成,请下载RuStorePush SDK并将其导入项目(Assets → Import Package → Custom Package)。依赖项将通过SDK中包含的External Dependency Manager自动连接。
MinimumAPIlevel 应设置为不低于24。应用程序的缩减(ProGuard/R8)目前不受支持,因此需要在项目设置中将其关闭(File → Build Settings → Player Settings → Publishing Settings → Minify)。
编辑应用程序清单
您必须声明 RuStoreUnityMessagingService 服务:
\< service \`\`android:name = \"ru.rustore.unitysdk.pushclient.RuStoreUnityMessagingService\" \`\`android:exported = \"true\" \`\`tools:ignore = \"ExportedService\" \> \`\`\< intent-filter \> \`\`\< action android:name = \"ru.rustore.sdk.pushclient.MESSAGING_EVENT\" /\> \`\`\</ intent-filter \>\</ service \>
果您想更改标准通知的图标或颜色,可以添加以下元数据:
\< meta-data \`\`android:name = \"ru.rustore.sdk.pushclient.default_notification_icon\" \`\`android:resource = \"@drawable/ic_baseline_android_24\" /\>\< meta-data \`\`android:name = \"ru.rustore.sdk.pushclient.default_notification_color\" \`\`android:resource = \"@color/your_favorite_color\" /\>
可以添加以下元数据以重写通知渠道:
\< meta-data \`\`android:name = \"ru.rustore.sdk.pushclient.default_notification_channel_id\" \`\`android:value = \"@string/pushes_notification_channel_id\" /\>
您添加自己的推送通知渠道时,您需要自行创建该渠道。
初始化
为了初始化,需要在项目中重写 Application 类。所需的源代码已包含在文件 Assets/RuStoreSDK/PushClient/Android/RuStoreUnityApplication.java 中:
package ru.rustore.unitysdk;import android.app.Application;import ru.rustore.unitysdk.pushclient.RuStoreUnityPushClient;public class RuStoreUnityApplication extends Application { \`\`@Override public void onCreate() { \`\`super .onCreate(); \`\`RuStoreUnityPushClient.init( \`\`application = this \`\`); \`\`}}
application
- Application类的实例。
要在项目的 AndroidManifest.xml 中指定这个类:
\< application android:name = \"ru.rustore.unitysdk.RuStoreUnityApplication\" \>
将使用在Unity编辑器中设置的参数进行初始化。在编辑器菜单中选择Window → RuStoreSDK → Settings → Push Client:
VKPNSProjectId
- 您在 RuStore 开发者控制台中项目的标识符;AllowAllow Native Error Handling
- 允许原生 SDK 中的错误处理。错误处理
从 C#### 代码中调用库方法之前,必须先调用它的初始化:
var сonfig = new RuStorePushClientConfig() { \`\`allowNativeErrorHandling = true , \`\`messagingServiceListener = pushServiceListener, \`\`logListener = pushLogListener};RuStorePushClient.Instance.Init(сonfig);
allowallowNativeErrorHandling
- 允许原生 SDK 中的错误处理;错误处理messagingServiceListener
- 实现 IMessagingServiceListener 接口的类对象;logListener
- 实现 ILogListener 接口的类对象。
检查获得推送通知的可能性
为了推送通知的运行,必须遵守几个条件:
- 用户的设备上必须安装 RuStore。
- RuStore 必须支持推送通知功能。
- RuStore 应用程序应允许在后台模式下运行。
- 用户必须在 RuStore 中获得授权。
了检查上述条件,可以使用 RuStorePushClient.checkPushAvailability 方法。
RuStorePushClient.Instance.CheckPushAvailability( \`\`onFailure: (error) =\> { \`\`// Process error \`\`}, \`\`onSuccess: (response) =\> { \`\`if (!response.isAvailable) { \`\`// Process push unavailable \`\`} \`\`});
使用推送令牌的方法
获取用户的推送令牌
在库初始化之后,您可以使用 RuStorePushClient.GetToken() 方法来获取当前用户的推送令牌。如果用户没有推送令牌,则该方法将创建并返回新的推送令牌。
RuStorePushClient.Instance.GetToken( \`\`onFailure: (error) =\> { \`\`// Process error \`\`}, \`\`onSuccess: (token) =\> { \`\`// Process success \`\`});
删除用户的推送令牌
在库初始化之后,您可以使用 RuStorePushClient.DeleteToken() 方法来删除当前用户的推送令牌。
RuStorePushClient.Instance.DeleteToken( \`\`onFailure: (error) =\> { \`\`// Process error \`\`}, \`\`onSuccess: () =\> { \`\`// Process success \`\`});
用于处理推送主题的方法
订阅主题的推送通知
在初始化库之后,您可以使用 SubscribeToTopic("your_topic_name") 方法来订阅主题。
RuStorePushClient.Instance.SubscribeToTopic( \`\`topicName: \"your_topic_name\" , \`\`onFailure: (error) =\> { \`\`// Process error \`\`}, \`\`onSuccess: () =\> { \`\`// Process success \`\`});
取消订阅主题的推送通知
在初始化库之后,您可以使用 UnsubscribeFromTopic("your_topic_name") 方法来取消订阅主题。
RuStorePushClient.Instance.UnsubscribeFromTopic( \`\`topicName: \"your_topic_name\" , \`\`onFailure: (error) =\> { \`\`// Process error \`\`}, \`\`onSuccess: () =\> { \`\`// Process success \`\`});
使用 RuStore 的操作MessagingService
public interface IMessagingServiceListener { \`\`public void OnNewToken( string token); \`\`public void OnMessageReceived(RemoteMessage message); \`\`public void OnDeletedMessages(); \`\`public void OnError(List\<RuStoreError\> errors);}
OnNewToken - 在接收到新的推送令牌时将被调用。
调用此方法后,您的应用程序负责将新的推送令牌传递到自己的服务器。
OnMessageReceived - 在接收到新的推送通知时将被调用。
可以从message.data字段获取推送通知的payload(Dictionary<string, string>)。
OnDeletedMessages - 如果一个或多个推送通知没有被送达到设 备,将会调用此方法。
这可能是因为通知的生命周期在送达设备前已经结束。
在调用此方法时,建议与您的服务器同步,以免错过数据。
OnError - 如果在初始化过程中发生错误,将会调用此方法。
可能的错误:
UnauthorizedException
- 用户未在 RuStore 中授权。HostAppNotInstalledException
- 用户设备上未安装RuStore应用程序。HostAppBackgroundWorkPermissionNotGranted
- RuStore 没有在后台工作的权限。
有上述方法都将在后台线程上被调用。
通知结构体
完整通知的结构体
public class RemoteMessage { \`\`public string collapseKey; \`\`public Dictionary\< string , string \> data; \`\`public string messageId; \`\`public Notification notification; \`\`public int priority; \`\`public sbyte \[\] rawData; \`\`public int ttl;}
messageId
- 消息的唯一ID。它是每个消息的标识符。priority
- (当前不考虑)返回优先级值。目前有以下选项:0
-UNKNOWN
.1
-HIGH
.2
-NORMAL
.
ttl
- Int类型的推送通知生命周期(以秒为单位)。collapseKey
- (当前不考虑)通知组的标识符。data
- 一个字典,在其中可以传递额外的通知数据。rawData
- data 字典以字节数组形式。notification
- 通知对象。
public class Notification { \`\`public string title; \`\`public string body; \`\`public string channelId; \`\`public string imageUrl; \`\`public string color; \`\`public string icon; \`\`public string clickAction;}
-
title
- 通知的标题; -
body
- 通知的正文; -
channelId
- 可以指定的渠道,用于发送通知(适用于Android 8.0及更高版本); -
imageUrl
- 插入通知中的图片的直接链接(图片大小不超过1兆字节); -
color
- 通知的颜色(Notification.color)。颜色需要以十六进制格式传递,为字符串格式(例如:"#A52A2A"); -
icon
- 通知的图标。图标应存放在应用程序的资源中(res/drawable)。参数的值` - 一个字符串,与资源名称相匹配;- 例如:在 res/drawable 中有一个名为small_icon.xml的图标,在代码中通过R.drawable.small_icon访问。为了在通知中显示这个图标,服务器需要在 "icon" 参数中放入 "small_icon" 的值。
-
clickAction
- intent点击通知时,用于打开活动的intent action。