ローカルプッシュの送信
HIVEは、ゲームクライアントからデバイスにプッシュ通知を登録することでゲームアラームとして使用できる機能を提供します。これをローカルプッシュと呼びます。Hive SDKはローカルプッシュの登録および解除機能を提供します。登録されたローカルプッシュは、アプリを閉じていても指定された時間に通知を行い、必要に応じて登録されたローカルプッシュを解除することができます。
Note
-
Android 4.4 (KitKat) APIレベル19以降では、ローカルプッシュの送信と受信の状態は保証されていません。
-
Android OSはプッシュ通知を制限してバッテリーの使用を最小限に抑えます。
ローカルプッシュデータ¶
HIVEはLocalPushクラスでローカルプッシュデータを以下の内容で定義します。
名前 | 種類 | 説明 |
---|---|---|
noticeId | 整数 | ローカルプッシュメッセージの識別子 |
title | 文字列 | ローカルプッシュメッセージのタイトル |
msg | 文字列 | ローカルプッシュメッセージの内容 |
after | 整数 | プッシュ登録とメッセージポップアップの間隔(単位:秒、デフォルト=0) |
groupId | 文字列 | これは通知グループのグループIDです。通知グループは、同じアプリから送信された通知をユーザーのデバイス上でグループ化して表示します。これに値を設定しなかった場合、ローカルプッシュメッセージはデフォルトのアプリグループに表示されます。 |
ローカルプッシュの登録¶
ユーザーのデバイスでローカルプッシュ通知を登録するには、PushクラスのregisterLocalPush()
メソッドを呼び出します。
Note
iOSでは、ローカルプッシュ通知の登録の最大数は64であり、デバイスやOSのバージョンによっては64未満に制限される場合があります。制限を超えて通知を登録すると、古い通知から順に破棄されます。 (Link)
以下はローカルプッシュを登録するためのサンプルコードです。
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 LocalPush;
LocalPush.NoticeId = 1;
LocalPush.Title = TEXT("ローカルプッシュタイトル");
LocalPush.Msg = TEXT("ローカルプッシュメッセージ");
LocalPush.After = 5;
LocalPush.GroupId = TEXT("a");
FHivePush::RegisterLocalPush(LocalPush, FHivePushOnLocalPushDelegate::CreateLambda([this](const FHiveResultAPI& Result, const FHiveLocalPush& LocalPush) {
if (Result.IsSuccess()) {
// API call successfull
}
}));
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 = "ローカルプッシュタイトル"
msg = "ローカルプッシュメッセージ"
after = 5
groupId = "a"
}
Push.registerLocalPush(localPush, object : Push.LocalPushListener {
override fun onRegisterLocalPush(result: ResultAPI, localPush: Push.LocalPush?) {
if (result.isSuccess) {
// 成功を呼び出す
}
}
})
APIリファレンス: com.hive.Push.registerLocalPush
import com.hive.Push;
import com.hive.ResultAPI;
Push.LocalPush localPush = new Push.LocalPush();
localPush.setNoticeID(1);
localPush.setTitle("ローカルプッシュタイトル");
localPush.setMsg("ローカルプッシュメッセージ");
localPush.setAfter(5);
localPush.setGroupId("a");
Push.INSTANCE.registerLocalPush(localPush, (result, localPushData) -> {
if (result.isSuccess()) {
// 成功した呼び出し
}
});
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 = @"Local Push Title";
localPush.msg = @"Local Push Message";
localPush.after = 5;
localPush.groupId = @"a";
[HIVEPush registerLocalPush: localPush handler: ^(HIVEResultAPI *result, HIVELocalPush *localPush) {
if ([result isSuccess]) {
// 成功した場合の呼び出し
}
}];
ローカルプッシュの登録解除¶
指定された通知時間の前に、登録されたローカルプッシュ通知を登録解除することができます。
登録されたローカルプッシュを登録解除する 次のAPIを使用して、登録されたプッシュ識別子をパラメーター(noticeId)として設定し、ローカルプッシュを登録解除します。
API リファレンス: hive .Push.unregisterLocalPush
APIリファレンス: Push ::unregisterLocalPush
APIリファレンス: Push.unregisterLocalPush
APIリファレンス: com .hive.Push.unregisterLocalPush
APIリファレンス: PushInterface .unregisterLocalPush
APIリファレンス: HIVEPush ::unregisterLocalPush
リストされたローカルプッシュを一度に登録解除する
以下のAPIを使用すると、登録されたローカルプッシュ識別子のリストを作成し、一度にローカルプッシュを登録解除できます。
API リファレンス: hive.Push .unregisterLocalPushes
APIリファレンス: Push:: unregisterLocalPushes
API リファレンス: Push.unregisterLocalPushes
APIリファレンス: com.hive .Push.unregisterLocalPushes
API リファレンス: PushInterface .unregisterLocalPushes
API リファレンス: HIVEPush:: unregisterLocalPushes
すべてのローカルプッシュを登録解除する
以下のAPIを使用すると、Hive SDKのローカルプッシュだけでなく、リスニング状態にあるすべてのローカルプッシュを登録解除できます。
APIリファレンス: hive.Push .unregisterAllLocalPushes
APIリファレンス: Push:: unregisterAllLocalPushes
APIリファレンス: Push.unregisterAllLocalPushes
API リファレンス: com.hive .Push.unregisterAllLocalPushes
APIリファレンス: PushInterface.unregisterAllLocalPushes
API リファレンス: HIVEPush:: unregisterAllLocalPushes
ローカルプッシュUIのカスタマイズ(Androidのみ)¶
ローカルプッシュはAndroidデバイスでカスタマイズできます。カスタマイズするUI要素に関する情報は、ローカルプッシュを登録するregisterLocalPush()
メソッドのLocalPushクラスパラメータに設定されており、プッシュ設定情報とともにローカルプッシュを登録します。
ローカルプッシュUI¶
ローカルプッシュUIのカスタマイズデータは、LocalPushクラスで定義されており、ローカルプッシュ設定のデータを定義しています。以下の表は、UIアイテムに関連するLocalPushクラスの変更可能なフィールドのいくつかを説明しています。
いくつかのフィールド名は詳細にリンクされています。フィールド名をクリックすると、スクリーンショット付きの詳細を読むことができます。
名前 | タイプ | 説明 | 必須 |
---|---|---|---|
type | 文字列 | プッシュメッセージのダイアログタイプ: "bar" : 通知バーにのみ通知を表示 (デフォルト) "toast" : トーストポップアップ としてのみ通知を表示 "bar,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
フィールドはプッシュメッセージのダイアログ形式を意味します。この形式は、プッシュメッセージを画面に表示する方法を定義します。 プッシュメッセージのダイアログ形式には3つのオプションがあります。
- バータイプ: バーは画面の上部に
アイコン
、タイトル
、およびメッセージ
と共に表示されます。デバイスの画面がオフのときは通知は表示されません。 - ポップアップタイプ: ポップアップはトースト形式で表示されます
- バーとポップアップの両方のタイプ: バーとポップアップの両方が画面に表示されます
デバイスの画面がオフで、タイプが**バーとポップアップタイプの両方**に設定されている場合、ポップアップは画像のみが上に表示されます。
bigmsg
と bigpicture
フィールド¶
下の画像を見て、大きなメッセージと画面に表示された大きな画像を確認してください。
bigmsg
フィールドを使用して大量のテキストを表示します。ticker
フィールドはbigmsg
と一緒に使用できます。bigpicture
フィールドを使用すると、通知画面に大きなサイズの画像を表示できます。bigpicture
はbigmsg
と一緒には使用できません。bigpicture
はticker
と一緒に使用できます。
buckettype
フィールド¶
複数の通知が表示され、buckettype
フィールドの値が1または2の場合、スタックされた通知がセクションに表示されます。
bucketsize
は通知バーに表示されるメッセージの数を意味します。buckettype
の値が 1 の場合、つまりインボックスタイプであり、メッセージが1行を超えると、エリプシス (...) が追加され、画面外の内容は表示されません。buckettype
の値が 2 の場合、全てのテキストが画面に表示されます。buckettype
はticker
と共に使用できます。
Note
Google Play ストアでのフィーチャーのために target = 21 を設定する場合は、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 cloud game通知を送信する (Android)¶
Hive SDKのローカルプッシュ機能を使用して、Facebook Cloud Gameビルドから提供される、Facebookアプリからユーザー通知を利用できます。
Note
As of Hive SDK v4 24.2.0, the Facebook Cloud Game feature is no longer supported. For projects that were using Facebook Cloud Game, please remove all related settings and function calls.
Facebookの通知には、Androidの通常のプッシュとは異なる制限があります。詳細については、Facebookアプリからユーザー通知のページをご確認ください。
Facebookの通知機能は常にFacebookによって更新されており、その動作に常に変化をもたらしています。Facebookの通知機能が安定するまで、Hive SDKは継続的に更新されます。 (v4.16.1は2022年10月時点でFacebookアプリからユーザー通知の更新をフォローアップし、確認しました。)
Facebook通知機能に必要なデータは、LocalPushクラスで定義する必要があります。以下の表は、Facebook通知に必要なLocalPushクラスのフィールドを定義しています。
名前 | タイプ | 説明 | 必須 |
title | 文字列 | - ローカルプッシュメッセージのタイトル- 1~30文字が必要です- タイトルの値はHive SDK 4.16.1以降必須ですが、Facebook UIでどこで使用されるかは確認されていません. | 必須 |
msg | 文字列 | - ローカルプッシュメッセージの内容- 10~180文字が必要です- 通知のメッセージとして表示されます | 必須 |
after | 整数 | - プッシュ登録後にプッシュメッセージを表示するまでの秒数を示します(秒単位、デフォルト値 = 0)- 10日以内の時間値(秒)を設定してください | 必須 |
bigpicture | 文字列 | - 画像設定が必要です- 300x200 px- 10MB未満- 画像がウェブリンクとして投稿される場合、httpまたはhttpsで始まるurl(例: https://hive-fn.qpyou.cn/hubweb/hive_img/U/P/122349090/20151028/82f610b6f4590863934cefb2b875c87a.jpg)- 画像ファイルがプロジェクトリソースに含まれている場合、画像ファイルは/res/drawableの下に含める必要があります。ファイル名がfbcloudtest.pngの場合、値としてfbcloudtestのみを入力します。 | 必須 |
通知が届くと、通知の内容が以下のようにFacebookのウェブページとアプリに表示されます。