コンテンツにスキップ

ローカルプッシュの送信

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

using hive;    
    int noticeId = 1; // local push unique ID    
Push.unregisterLocalPush(noticeId);
#include "HivePush.h"

int32 お知らせID = 1; // ローカルプッシュユニークID 

FHivePush::UnregisterLocalPush(NoticeID);

APIリファレンス: Push ::unregisterLocalPush

#include <HIVE_SDK_Plugin/HIVE_CPP.h>    
    using namespace std;    
    using namespace hive;    
    int noticeId = 1; // local push unique ID    
Push::unregisterLocalPush(noticeId);

APIリファレンス: Push.unregisterLocalPush

import com.hive.Push    
    val noticeId = 1 // local push unique ID    
Push.unregisterLocalPush(noticeId)

APIリファレンス: com .hive.Push.unregisterLocalPush

import com.hive.Push;    
    int noticeId = 1; // local push unique ID    
Push.INSTANCE.unregisterLocalPush(noticeId);

APIリファレンス: PushInterface .unregisterLocalPush

import HIVEService    
    let noticeId = 1 // local push unique ID    
PushInterface.unregisterLocalPush(noticeId)

APIリファレンス: HIVEPush ::unregisterLocalPush

#import <HIVEService/HIVEService-Swift.h>    
    NSInteger noticeId = 0; // local push unique ID    
[HIVEPush unregisterLocalPush: noticeId];

リストされたローカルプッシュを一度に登録解除する

以下のAPIを使用すると、登録されたローカルプッシュ識別子のリストを作成し、一度にローカルプッシュを登録解除できます。

API リファレンス: hive.Push .unregisterLocalPushes

using hive;    
    List noticeIds = new List { 1, 2, 3 }();    
Push.unregisterLocalPushes(noticeIds);
#include "HivePush.h"

TArray<int32> NoticeIds = { 1, 2, 3 };

FHivePush::UnregisterLocalPushes(NoticeIds);

APIリファレンス: Push:: unregisterLocalPushes

#include <HIVE_SDK_Plugin/HIVE_CPP.h>    
    using namespace std;    
    using namespace hive;    
    vector noticeIds = { 1, 2, 3 };    
Push::unregisterLocalPushes(noticeIds);

API リファレンス: Push.unregisterLocalPushes

import com.hive.Push    
    val noticeIds = arrayListOf(1, 2, 3)    
Push.unregisterLocalPushes(noticeIds)

APIリファレンス: com.hive .Push.unregisterLocalPushes

import com.hive.Push;    
    ArrayList<Integer> noticeIds = new ArrayList<>();    
    noticeIds.add(1);    
    noticeIds.add(2);    
    noticeIds.add(3);    
Push.INSTANCE.unregisterLocalPushes(noticeIds);

API リファレンス: PushInterface .unregisterLocalPushes

import HIVEService    
    let noticeIds = [1, 2, 3]    
PushInterface.unregisterLocalPushes(noticeids)

API リファレンス: HIVEPush:: unregisterLocalPushes

#import <HIVEService/HIVEService-Swift.h>    
    NSArray* noticeIds = @[ @(1), @(2), @(3) ];    
[HIVEPush unregisterLocalPushes: noticeIds];

すべてのローカルプッシュを登録解除する

以下のAPIを使用すると、Hive SDKのローカルプッシュだけでなく、リスニング状態にあるすべてのローカルプッシュを登録解除できます。

APIリファレンス: hive.Push .unregisterAllLocalPushes

using hive;    
Push.unregisterAllLocalPushes();
#include "HivePush.h"

FHivePush::UnregisterAllLocalPushes();

APIリファレンス: Push:: unregisterAllLocalPushes

#include <HIVE_SDK_Plugin/HIVE_CPP.h>    
    using namespace std;    
    using namespace hive;    
Push::unregisterAllLocalPushes();

APIリファレンス: Push.unregisterAllLocalPushes

import com.hive.Push    
Push.unregisterAllLocalPushes()

API リファレンス: com.hive .Push.unregisterAllLocalPushes

import com.hive.Push;    
Push.INSTANCE.unregisterAllLocalPushes();

APIリファレンス: PushInterface.unregisterAllLocalPushes

import HIVEService    
PushInterface.unregisterAllLocalPushes()

API リファレンス: HIVEPush:: unregisterAllLocalPushes

#import <HIVEService/HIVEService-Swift.h>    
[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

bigpicturemsg フィールドで利用可能ですが、bigmsg および ticker では利用できません

type フィールド

typeフィールドはプッシュメッセージのダイアログ形式を意味します。この形式は、プッシュメッセージを画面に表示する方法を定義します。 プッシュメッセージのダイアログ形式には3つのオプションがあります。

  • バータイプ: バーは画面の上部にアイコンタイトル、およびメッセージと共に表示されます。デバイスの画面がオフのときは通知は表示されません。
  • ポップアップタイプ: ポップアップはトースト形式で表示されます
  • バーとポップアップの両方のタイプ: バーとポップアップの両方が画面に表示されます

デバイスの画面がオフで、タイプが**バーとポップアップタイプの両方**に設定されている場合、ポップアップは画像のみが上に表示されます。

bigmsgbigpicture フィールド

下の画像を見て、大きなメッセージと画面に表示された大きな画像を確認してください。

  • bigmsgフィールドを使用して大量のテキストを表示します。tickerフィールドはbigmsgと一緒に使用できます。
  • bigpictureフィールドを使用すると、通知画面に大きなサイズの画像を表示できます。
  • bigpicturebigmsgと一緒には使用できません。
  • bigpicturetickerと一緒に使用できます。

buckettype フィールド

複数の通知が表示され、buckettypeフィールドの値が1または2の場合、スタックされた通知がセクションに表示されます。

  • bucketsize は通知バーに表示されるメッセージの数を意味します。
  • buckettype の値が 1 の場合、つまりインボックスタイプであり、メッセージが1行を超えると、エリプシス (...) が追加され、画面外の内容は表示されません。
  • buckettype の値が 2 の場合、全てのテキストが画面に表示されます。
  • buckettypeticker と共に使用できます。
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のウェブページとアプリに表示されます。

  • ゲームページの中心に表示されること
  • ゲームページの左リストから切り替えられる通知メニューに見つかること
  • Facebookアプリに表示されること
  •