发送本地推送
HIVE 提供了一种功能,可以通过从游戏客户端向设备注册推送通知来用作游戏闹钟,而无需推送服务器。这被称为本地推送。Hive SDK 提供本地推送注册和释放功能。注册的本地推送将在您关闭应用程序时仍会在指定时间通知您,并且可以根据需要取消注册已注册的本地推送。
Note
-
在 Android 4.4 (KitKat) API Level 19 及更高版本上,发送和接收本地推送的状态无法保证。
-
Android操作系统限制推送通知以最小化电池使用。
本地推送数据¶
HIVE在LocalPush类中定义了本地推送数据,内容如下。
名称 | 类型 | 描述 |
---|---|---|
noticeId | 整数 | 本地推送消息的标识符 |
title | 字符串 | 本地推送消息的标题 |
msg | 字符串 | 本地推送消息的内容 |
after | 整数 | 推送注册与消息弹出之间的间隔(单位:秒,默认=0) |
groupId | 字符串 | 这是通知组的组ID。通知组在用户设备上以组的形式显示来自同一应用程序的通知。如果您没有为此设置值,本地推送消息将显示在默认应用组中。 |
注册本地推送¶
要在用户设备上注册本地推送通知,请调用Push类的registerLocalPush()
方法。
Note
在 iOS 上,注册本地推送通知的最大数量为 64,并且根据设备和操作系统的版本,可能会限制为少于 64。如果您注册的通知超过限制,它将按顺序丢弃最旧的通知。 (链接)
以下是注册本地推送的示例代码。
API 参考: hive.Push.registerLocalPush
using hive;
LocalPush localPush = new LocalPush ();
localPush.noticeId = 1;
localPush.title = "本地推送标题";
localPush.msg = "本地推送消息";
localPush.after = 5;
localPush.groupId = "a";
Push.registerLocalPush(localPush, (ResultAPI result, LocalPush localPush) => {
if (result.isSuccess()) {
// call successful
}
});
#include "HivePush.h"
FHiveLocalPush 本地推送;
本地推送.NoticeId = 1;
本地推送.Title = TEXT("本地推送标题");
本地推送.Msg = TEXT("本地推送消息");
本地推送.After = 5;
本地推送.GroupId = TEXT("a");
FHivePush::RegisterLocalPush(LocalPush, FHivePushOnLocalPushDelegate::CreateLambda([this](const FHiveResultAPI& Result, const FHiveLocalPush& LocalPush) {
if (Result.IsSuccess()) {
// API调用成功
}
}));
API 参考: Push::registerLocalPush
#include <HIVE_SDK_Plugin/HIVE_CPP.h>
using namespace std;
using namespace hive;
LocalPush localPush;
localPush.noticeId = 1;
localPush.title = "Local Push Title";
localPush.msg = "Local Push Message";
localPush.after = 5;
localPush.groupId = "a";
Push::registerLocalPush(localPush, [=](ResultAPI result, LocalPush localPush){
if (result.isSuccess()) {
// call successful
}
});
API 参考: registerLocalPush
import com.hive.Push
import com.hive.ResultAPI
val localPush = Push.LocalPush().apply {
noticeID = 1
title = "Local Push Title"
msg = "Local Push Message"
after = 5
groupId = "a"
}
Push.registerLocalPush(localPush, object : Push.LocalPushListener {
override fun onRegisterLocalPush(result: ResultAPI, localPush: Push.LocalPush?) {
if (result.isSuccess) {
// call successful
}
}
})
API 参考: com.hive.Push.registerLocalPush
import com.hive.Push;
import com.hive.ResultAPI;
Push.LocalPush localPush = new Push.LocalPush();
localPush.setNoticeID(1);
localPush.setTitle("Local Push Title");
localPush.setMsg("Local Push Message");
localPush.setAfter(5);
localPush.setGroupId("a");
Push.INSTANCE.registerLocalPush(localPush, (result, localPushData) -> {
if (result.isSuccess()) {
// call successful
}
});
API 参考: registerLocalPush(_:handler:)
import HIVEService
let localPush = LocalPush()
localPush.noticeId = 1;
localPush.title = "Local Push Title";
localPush.msg = "Local Push Message";
localPush.after = 5;
localPush.groupId = "a";
PushInterface.registerLocalPush(localPush) { result, localPush in
if result.isSuccess() {
// call successful
}
}
API 参考: Objective-C
#import <HIVEService/HIVEService-Swift.h>
HIVELocalPush *localPush = [[HIVELocalPush alloc] init];
localPush.noticeId = 1;
localPush.title = @"本地推送标题";
localPush.msg = @"本地推送消息";
localPush.after = 5;
localPush.groupId = @"a";
[HIVEPush registerLocalPush: localPush handler: ^(HIVEResultAPI *result, HIVELocalPush *localPush) {
if ([result isSuccess]) {
// call successful
}
}];
取消本地推送¶
您可以在指定的通知时间之前取消注册已注册的本地推送通知。
注销已注册的本地推送 使用以下API,将注册的推送标识符作为参数(noticeId),并注销本地推送。
API 参考: hive .Push.unregisterLocalPush
API 参考: Push ::unregisterLocalPush
API 参考: Push.unregisterLocalPush
API 参考: HIVEPush ::unregisterLocalPush
一次性注销列出的本地推送
使用以下 API,您可以创建已注册的本地推送标识符列表,并一次性注销本地推送。
API 参考: hive.Push .unregisterLocalPushes
API 参考: Push:: unregisterLocalPushes
API 参考: Push.unregisterLocalPushes
API 参考: HIVEPush:: unregisterLocalPushes
注销所有本地推送
使用以下 API,您不仅可以注销 Hive SDK 的本地推送,还可以注销所有处于监听状态的本地推送。
API Reference: hive.Push .unregisterAllLocalPushes
API 参考: Push:: unregisterAllLocalPushes
API 参考: Push.unregisterAllLocalPushes
自定义本地推送 UI (仅限 Android)¶
本地推送可以在Android设备上进行自定义。有关要自定义的UI元素的信息设置在registerLocalPush()
方法的LocalPush类参数中,该方法注册本地推送以及推送设置信息。
本地推送 UI¶
本地推送 UI 的自定义数据在 LocalPush 类中定义,该类定义了本地推送设置的数据。下表描述了与 UI 项目相关的 LocalPush 类中的一些可更改字段。 某些字段名称链接到详细信息。点击字段名称以查看带有屏幕截图的更多详细信息。
名称 | 类型 | 描述 | 必需 |
---|---|---|---|
type | 字符串 | 推送消息的对话类型: "bar" : 仅在通知栏显示通知(默认) "toast" : 仅作为 toast 弹出 显示通知 "bar,toast" : 同时在通知栏和作为 toast 弹出显示通知 | 可选 |
bigmsg | 字符串 | 用户从屏幕顶部查看的内容。无限长度 注意:适用于 Android Jelly Bean (4.1) 及更高版本 | 可选 |
ticker | 字符串 | 带有推送通知的跑马灯 | 可选 |
icon | 字符串 | /res/drawable 目录中的文件名,不包括文件扩展名。例如,如果文件路径是 res/drawable-xhdpi/hive_icon.png,则 icon 字段的值为 "hive\_icon" 。没有文件名时,游戏图标显示为默认 | 可选 |
sound | 字符串 | 推送通知的声音文件路径 没有文件路径时,使用默认通知声音 | 可选 |
active | 字符串 | 用户点击推送通知时的操作设置: "app" : 执行游戏(默认) "web:< 要移动的 URL>" : 移动到该 URL | 可选 |
broadcastAction | 字符串 | 广播的操作值 | 可选 |
buckettype | 整数 | 显示推送通知的类型: * 0: 覆盖(默认) * 1: 收件箱 * 2: 附加 | 可选 |
bucketsize | 整数 | 一次显示与一个推送 ID 相关的消息数量 | 可选 |
bigpicture | 字符串 | 显示在推送通知上的图像文件路径 | 可选 |
icon_color | 字符串 | 图标的背景颜色 格式: {"r":[0–255],"g":[0–255],"b":[0–255]} 例如: {"r":0,"g":128,"b":255} 注意:适用于 Android Lollipop (5.0) 及更高版本 | 可选 |
Note
bigpicture
在 msg
字段中可用,但在 bigmsg
和 ticker
中不可用
type
字段¶
type
字段表示推送消息的对话形式。此形式定义了如何在屏幕上显示推送消息。 推送消息的对话形式有三个选项。
- 条形类型:条形显示在屏幕顶部,包含
图标
、标题
和消息
。当设备屏幕关闭时,不会显示通知。 - 弹出类型:弹出以吐司格式显示
- 条形和弹出类型:条形和弹出都显示在屏幕上
如果设备屏幕关闭并且类型设置为**条形和弹出类型**,则弹出窗口仅作为图像显示在上方。
bigmsg
和 bigpicture
字段¶
- 使用
bigmsg
字段来显示一大段文本。ticker
字段可与bigmsg
一起使用。 - 使用
bigpicture
字段,您可以在通知屏幕上显示大尺寸图片。 bigpicture
与bigmsg
不可用。bigpicture
可与ticker
一起使用。
buckettype
字段¶
如果显示多个通知并且buckettype
字段的值为1或2,则堆叠的通知会显示在一个部分上。
bucketsize
指的是在通知栏上显示的消息数量。- 如果
buckettype
的值为 1,表示收件箱类型,如果消息超过一行,则会添加省略号 (...),并且超出屏幕的内容不会显示。 - 如果
buckettype
的值为 2,则整个文本会显示在屏幕上。 buckettype
可以与ticker
一起使用。
Note
如果您将目标设置为 21 以在 Google Play 商店中展示,请添加通知图标,以防止在 Android 5.0 或更高版本的设备上推送图标显示为白色。要做到这一点,请在 /res/drawable/ 文件夹中添加一个名为 ic_c2s_notification_small_icon.png 的图标文件。图标的 DPI 大小如下;
- mdpi: 24x24
- hdpi: 36x36
- xhdpi: 48x48
- xxhdpi: 72x72
- xxxhdpi: 96x96
有关设计的更多信息,请参阅 Google Design Guide。
发送 Facebook 云游戏 通知 (Android)¶
通过Hive SDK提供的本地推送功能,您可以使用来自Facebook Cloud Game构建的Facebook应用程序到用户通知。
Note
从Hive SDK v4 24.2.0开始,Facebook Cloud Game功能不再支持。对于使用Facebook Cloud Game的项目,请移除所有相关设置和函数调用。
对于 Facebook 通知,有一些限制,这些限制与 Android 的普通推送不同。请查看 Facebook 应用到 用户 通知 页面上的详细信息。
请注意,Facebook 通知功能正在不断更新,导致其行为不断变化。在 Facebook 通知功能变得稳定之前,Hive SDK 将持续更新。 (v4.16.1 已于 2022 年 10 月跟进并验证了 Facebook 应用程序到 用户 通知的更新。)
Facebook通知功能所需的数据必须在LocalPush类中定义。下表定义了LocalPush类的哪些字段是Facebook通知所必需的。
名称 | 类型 | 描述 | 必需 |
title | 字符串 | - 本地推送消息标题- 需要1~30个字符- 从Hive SDK 4.16.1开始,标题值是必需的,但尚未确认在Facebook UI中的使用位置. | 必需 |
msg | 字符串 | - 本地推送消息内容- 需要10~180个字符- 在通知中作为消息显示 | 必需 |
after | 整数 | - 指示在推送注册后显示推送消息需要多少秒(以秒为单位,默认值=0)- 设置时间值(秒)最多为10天或更少 | 必需 |
bigpicture | 字符串 | - 需要图像设置- 300x200 px- 小于10MB- 如果图像作为网络链接发布,url应以http或https开头(例如: https://hive-fn.qpyou.cn/hubweb/hive_img/U/P/122349090/20151028/82f610b6f4590863934cefb2b875c87a.jpg)- 如果图像文件包含在项目资源中,图像文件应包含在/res/drawable下。如果文件名为fbcloudtest.png,则只需输入fbcloudtest作为值。 | 必需 |
当通知到达时,通知的内容将在Facebook网页和应用程序上显示,如下所示。