プッシュ通知のクイックスタート
PlayFab からのプッシュ通知は、3 つの主要システムの連携によって有効になります。
- プレイヤーのデバイス OS (Android、iOS など)
- ベンダー固有のチャンネル (Google、Apple など)
- クロスプラットフォーム メッセージ ルーティング (Amazon 簡易通知サービス [SNS] を介した PlayFab)。
注意
これらのシステムのいずれかのリンクが解除されていると、クライアントは通知を受け取ることができません。 3 つのシステムのうちの 1 つを誤って変更し、リンクを解除してしまうことはよくあります。 さらに、すべてのシステムが適切に構成されているかどうかをフローのあらゆる時点で把握することは困難です。
PlayFab プッシュ ルーティング システム
すべての PlayFab タイトルで、一度に 1 つの Google (GCM) プッシュ通知と 1 つの Apple プッシュ通知 (APNS、APNS_SANDBOX) チャンネルを有効にできます。 2 つの方法のうち、 1 つの方法で設定することができます。
- [設定] - >[プッシュ通知] にある [ゲーム マネージャー] の UI を使用する。
- PlayFab 管理 API - SetupPushNotificationを使用します。
より詳細な設定情報については、以下のチュートリアルを読んでください。
ゲーム内でのプッシュ メッセージ
プッシュ メッセージは開発エンジン/プラットフォームによって異なります。 ただし、プッシュ通知を受信する最も簡単な方法は、Android 用の SDK と Firebase Cloud Messaging (FCM) プラグイン、または iOS 用の Unity のみを使用した Unity プロジェクトを使用することです。
- Android でプッシュを受信する- プラグインが必要です。 最もサポートされているプラグインはネイティブの FCM プラグインです。
- iOS でプッシュを受信する- 基本的なプッシュ メッセージ用のプラグインを必要としません。
ヒント
FCM Unity プラグインを設定する方法、またはAndroid Studio でプッシュ通知を設定する方法については、FCM に関するドキュメントを参照してください。
設定のテスト
タイトルとクライアントを設定した場合、PlayFabサーバー API - SendPushNotification を使用して構成をテストできます。 この API を使用すると、追加料金なしで必要なだけプッシュ通知を送信できます。
PlayFab CloudScript サービスを迅速で安全なサーバー API 環境として使用できます。 そこから、必要に応じてプッシュ通知を送信できます。
この方法で設定をテストするには、次の例のコードをタイトルの CloudScript にアップロードまたは追加します。
例
次のシナリオを考えてみましょう。
タイトルのプレイヤーは、ランク統計に基づいて、ランキングにアクセスすることができます。
各プレイヤーは 1 CH 通貨を支払い、現在のプレイヤーから最大 5 ポジション離れた別のプレイヤーに挑戦することができます。
まず、下のスクリーンショットの例のような仮想通貨を考えます (仮想通貨の定義方法については通貨チュートリアルを参照してください)。
それでは、各プレイヤーに定義されている次の統計を考えてみましょう (テスト ランキングの生成方法については、「アーカイブ トーナメントの結果にアクセスする」チュートリアルを参照してください)。
これらの前提条件を設定したら、プッシュ通知チャレンジ システムを設定できます。
次のクライアント コードは、CloudScript ChallengePlayer
を呼び出します。
public void ChallengeRandomClosePlayer(string currentPlayerId) {
PlayFabClientAPI.GetLeaderboardAroundPlayer(new GetLeaderboardAroundPlayerRequest() {
MaxResultsCount = 10,
StatisticName = "Rank",
PlayFabId = currentPlayerId,
}, result => OnLeaderboardLoaded(result,currentPlayerId),OnPlayFabError);
}
private void OnLeaderboardLoaded(GetLeaderboardAroundPlayerResult leaderboard, string currentPlayerId) {
var index = (int)(UnityEngine.Random.value * (leaderboard.Leaderboard.Count-1));
if (leaderboard.Leaderboard[index].PlayFabId == currentPlayerId)
index = (index + 1) % leaderboard.Leaderboard.Count;
var targetId = leaderboard.Leaderboard[index].PlayFabId;
PlayFabClientAPI.ExecuteCloudScript(new ExecuteCloudScriptRequest() {
FunctionName = "ChallengePlayer",
FunctionParameter = new Dictionary<string, object>() {
{ "TargetId", targetId }
}
}, null, OnPlayFabError);
}
public void OnPlayFabError(PlayFabError obj) {
Debug.Log(obj.GenerateErrorReport());
}
ChallengePlayer
CloudScript コードはリクエストを処理し、ランキングの状態を検証し、チャレンジ プッシュ通知をターゲットに送信します。
handlers.ChallengePlayer = function (args) {
var targetId = args.TargetId;
var leaderboard = server.GetLeaderboardAroundUser({
MaxResultsCount : 10,
PlayFabId : currentPlayerId,
StatisticName : "Rank"
});
for(var i = 0; i < leaderboard.Leaderboard.length; i++) {
var target = leaderboard.Leaderboard[i];
if(target.PlayFabId !== targetId) continue;
// subtract virtual currency from current player
server.SubtractUserVirtualCurrency({
VirtualCurrency : "CH",
PlayFabId : currentPlayerId,
Amount : 1
});
// get current player profile
var profile = server.GetPlayerProfile({
PlayFabId : currentPlayerId
}).PlayerProfile;
// try to send push notification
try {
server.SendPushNotification({
Recipient : targetId,
Package : {
Message : `${profile.DisplayName} challenges you for a battle!`,
Title: "You have been challenged",
}
});
} catch (ex) {
// Target player has not registered for Push Notifications
}
return;
}
}
プッシュ通知の使用
プッシュ通知を使用できるのは、とても強力です。 ただし悪用すると、ユーザーが将来の通知を受け取らないようにしたり、ゲーム全体から退出したりする可能性があります。
しかし、慎重に使用すれば、プッシュ通知はゲーム コミュニティーを構築し、維持するための最良のツールの 1 つになります。
プッシュ通知は配信を保証するものではないファイア アンド フォーゲットのメッセージ プロトコルです。
注意
プレイヤーがメッセージを受け取ったり、開いたり、関与したりするという保証はありません。 このため、メッセージは、ゲームプレイのループの重要な部分としてではなく、ボーナス機能として使用することをお勧めします。
iOS プラットフォームの場合、アプリには OS からワンタイム ダイアログ プロンプトが表示され、ユーザーはプッシュ通知のステータスを判断できます。 ユーザーが最初の選択をした後も、この設定は次のようになるまで持続します。
アプリは更新または再インストールされます。
ユーザーは携帯電話の設定メニューから設定を変更します。
Android アプリの場合、通知は既定で有効になっており、クライアントから任意にオン/オフを切り替えることができます。
ヒント
セッションごとに通知リスナーを再初期化することをお勧めします。
リソース
以下のリソースは、このクイックスタートのトピックに関する追加情報です。
- Firebase Unity SDK: Unity 用のオールインワン FCM ソリューション。 この SDK により、他のすべての機能の中で、FCM 経由で送信されたプッシュ通知を受信して処理できます。
- 本当に良いプッシュ: プレイヤーに「はい」と言わせてプッシュ通知をする方法: このブログ記事は、プッシュ通知を使用するための戦略と手法について詳しく説明しています。
- プッシュ通知: このブログ記事では、プッシュ機能の最新のアップグレード、Android の主要プラグインとしての FCM への切り替えについて説明します。
- Postman クイック スタート: このクイックスタートでは、Postman を使用して API をテストする方法について説明します。