ドキュメント

サポート

Cloud Code

ユースケースサンプル: プレイヤーに新年の挨拶をする

Send a push notification to all users on January 1st at 00:00:00 UTC wishing them a happy new year.
読み終わるまでの所要時間 4 分最終更新 23日前

このサンプルは、1 月 1 日の 00:00:00 UTC に新年の挨拶をするプッシュ通知をすべてのユーザーに送信するようにスケジュールを設定する方法を示します。

前提条件

最初に、必要なアクセスロールでサービスアカウントを作成し、UGS CLI を設定する必要があります。

サービスアカウントを使用した認証

Scheduling および Triggers サービスを呼び出す前に、サービスアカウントを使用して認証する必要があります。
  1. Unity Cloud Dashboard に移動します。
  2. Administration (管理) > Service Accounts (サービスアカウント) を選択します。
  3. New (新規) ボタンを選択し、サービスアカウントの名前と説明を入力します。
  4. Create (作成) を選択します。
製品ロールを追加し、キーを作成します。
  1. Manage product roles (製品ロールの管理) を選択します。
  2. 以下のロールをサービスアカウントに追加します。
    • LiveOps ドロップダウンから、Triggers Configuration Editor (Triggers 設定編集者)、Triggers Configuration Viewer (Triggers 設定閲覧者)、Scheduler Configuration Editor (Scheduler 設定編集者)、Scheduler Configuration Viewer (Scheduler 設定閲覧者) を選択します。
    • Admin (管理者) ドロップダウンから Unity Environments Viewer (Unity 環境閲覧者) を選択します。
  3. Save (保存) を選択します。
  4. Add Key (キーの追加) を選択します。
  5. base64 エンコードを使用して Key ID (キー ID) と Secret key (秘密鍵) をエンコードします。形式は "key_id:secret_key" です。この値をメモしておきます。
詳細については、Authentication を参照してください。

UGS CLI の設定

以下のステップに従って、UGS CLI の使用を準備します。
  1. UGS CLI をインストール します。
  2. プロジェクト ID と環境を以下のように設定します。
    ugs config set project-id <your-project-id>

    ugs config set environment-name <your-environment-name>
  3. 前に作成したサービスアカウントを使用して認証します。認証の取得 を参照してください。

Cloud Code の設定

スコアが破られたプレイヤーにプッシュ通知を送信するモジュールエンドポイントを定義します。 以下のようなコンテンツで
WishHappyNewYear
モジュール関数を作成します。
using Microsoft.Extensions.DependencyInjection;using Microsoft.Extensions.Logging;using Unity.Services.CloudCode.Apis;using Unity.Services.CloudCode.Core;using Unity.Services.CloudCode.Shared;namespace WishHappyNewYear;public class HappyNewYear{ private readonly ILogger<HappyNewYear> _logger; public HappyNewYear(ILogger<HappyNewYear> logger) { _logger = logger; } [CloudCodeFunction("SendProjectMessage")] public async Task SendProjectMessage(IExecutionContext context, PushClient pushClient, string message, string messageType) { try { await pushClient.SendProjectMessageAsync(context, message, messageType); } catch (ApiException e) { _logger.LogError("Failed to send project message. Error: {Error}", e.Message); throw new Exception($"Failed to send project message. Error: {e.Message}"); } }}public class ModuleConfig : ICloudCodeSetup{ public void Setup(ICloudCodeConfig config) { config.Dependencies.AddSingleton(PushClient.Create()); }}
モジュールをデプロイします。 モジュールのデプロイ方法を学習するには、Hello World のデプロイ を参照してください。

イベントのスケジュール

Cloud Code モジュールを定義した後で、1 月 1 日の 00:00:00 UTC に新年の挨拶をするプッシュ通知をすべてのユーザーに送信するようにスケジュールを作成できます。
new-file
コマンドを実行して、スケジュール設定をローカルに作成します。
ugs scheduler new-file schedule-config
以下の設定で
schedule-config.sched
ファイルを更新します。
{ "$schema": "https://ugs-config-schemas.unity3d.com/v1/schedules.schema.json", "Configs": { "wish-happy-new-year": { "EventName": "send-announcement", "Type": "one-time", "Schedule": "2025-01-01T00:00:00Z", "PayloadVersion": 1, "Payload": "{\"message\": \"Happy New Year!\", \"messageType\": \"HappyNewYear\"}" } }}
UGS CLI ツールを使用して設定をデプロイします。
ugs deploy schedule-config.sched
正しいレスポンスは以下のようになります。
Deployed:schedule-config.sched

トリガーの設定

Cloud Code モジュールをスケジュールイベントに接続するには、トリガーを作成します。トリガーは、1 月 1 日 00:00:00 UTC にイベントが発生したときに Cloud Code モジュールを実行します。
new-file
コマンドを実行して、トリガー設定をローカルに作成します。
ugs triggers new-file triggers-config
以下の設定で
triggers-config.tr
ファイルを更新します。
{ "$schema": "https://ugs-config-schemas.unity3d.com/v1/triggers.schema.json", "Configs": [ { "Name": "happy-new-year", "EventType": "com.unity.services.scheduler.send-announcement.v1", "ActionUrn": "urn:ugs:cloud-code:WishHappyNewYear/SendProjectMessage", "ActionType": "cloud-code" } ]}
UGS CLI ツールを使用して設定をデプロイします。
ugs deploy triggers-config.tr
以下のようなレスポンスが返されます。
Deployed:triggers-config.tr
これで、1 月 1 日 00:00:00 UTC にスケジューラーイベントが発生したときに Cloud Code モジュール関数を実行するトリガーが設定されました。

結果の検証

結果を検証するには、プッシュメッセージをサブスクライブする Unity プロジェクトを設定します。

前提条件

プッシュメッセージをサブスクライブするには、最初に Cloud Code SDK をインストールし、Unity Gaming Services プロジェクト を Unity エディターにリンクする必要があります。

プロジェクトのリンク

Unity Gaming Services プロジェクト を Unity エディターにリンクします。UGS プロジェクト ID は Unity Cloud Dashboard にあります。
  1. Unity エディターで、Edit (編集) > Project Settings (プロジェクト設定) > Services (サービス) を選択します。
  2. プロジェクトをリンクします。
  • プロジェクトに Unity プロジェクト ID がない場合:
  1. Create a Unity Project ID (Unity プロジェクト ID の作成) > Organizations (組織) の順に選択し、ドロップダウンメニューから組織を選択します。
  2. Create project ID (プロジェクト ID を作成) を選択します。
  • 既存の Unity プロジェクト ID がある場合:
  1. Use an existing Unity project ID (既存の Unity プロジェクト ID を使用) を選択します。
  2. ドロップダウンメニューから組織とプロジェクトを選択します。
  3. Link project ID (プロジェクト ID をリンク) を選択します。
Unity プロジェクト ID が表示され、プロジェクトが Unity サービスにリンクされました。また、
UnityEditor.CloudProjectSettings.projectId
を使用して Unity エディタースクリプトのプロジェクト ID にアクセスすることもできます。

SDK のインストール

Unity エディターの最新の Cloud Code パッケージをインストールするには、以下を行います。
  1. Unity エディターで、Window (ウィンドウ) > Package Manager (パッケージマネージャー) を開きます。
  2. Package Manager で、Unity Registry (Unity レジストリ) のリストビューを選択します。
  3. com.unity.services.cloudcode
    を検索するか、リストから Cloud Code パッケージを探します。
  4. このパッケージを選択し、Install (インストール) をクリックします。

Monobehaviour スクリプトの作成

プロジェクトレベルのメッセージをサブスクライブするように
Monobehaviour
スクリプトを設定します。
詳細については、プッシュメッセージの送信 を参照してください。
MonoBehaviour
スクリプトには以下のサンプルコードを使用できます。
using System;using System.Threading.Tasks;using Newtonsoft.Json;using Unity.Services.Authentication;using Unity.Services.CloudCode;using Unity.Services.CloudCode.Subscriptions;using Unity.Services.Core;using UnityEngine;namespace CloudCode{ public class CloudCodePushExample : MonoBehaviour { async void Start() { await UnityServices.InitializeAsync(); await AuthenticationService.Instance.SignInAnonymouslyAsync(); Debug.Log(AuthenticationService.Instance.PlayerId); await SubscribeToProjectMessages(); } // This method creates a subscription to project messages and logs out the messages received, // the state changes of the connection, when the player is kicked and when an error occurs. Task SubscribeToProjectMessages() { var callbacks = new SubscriptionEventCallbacks(); callbacks.MessageReceived += @event => { Debug.Log(DateTime.Now.ToString("yyyy-MM-dd'T'HH:mm:ss.fffK")); Debug.Log($"Got project subscription Message: {JsonConvert.SerializeObject(@event, Formatting.Indented)}"); }; callbacks.ConnectionStateChanged += @event => { Debug.Log($"Got project subscription ConnectionStateChanged: {JsonConvert.SerializeObject(@event, Formatting.Indented)}"); }; callbacks.Kicked += () => { Debug.Log($"Got project subscription Kicked"); }; callbacks.Error += @event => { Debug.Log($"Got project subscription Error: {JsonConvert.SerializeObject(@event, Formatting.Indented)}"); }; return CloudCodeService.Instance.SubscribeToProjectMessagesAsync(callbacks); }}
Unity エディターに、モジュールが実行したときに送信されたプッシュメッセージが表示されます。
Got project subscription Message: { "data_base64": <BASE64-ENCODED-DATA>, "time": "2023-09-27T16:01:46.468321794Z", "message": "Happy new year!", "specversion": "1.0", "id": <ID>, "source": "https://cloud-code.service.api.unity.com", "type": "com.unity.services.cloud-code.push.v1", "projectid": <PROJECT-ID>, "environmentid": <ENVIRONMENT-ID>, "correlationid": <CORRELATION-ID>, "messagetype": "announcement"}