기술 자료

지원

Cloud Code

Cloud Code

사용 사례 샘플: 플레이어에게 새해 인사 전하기

Send a push notification to all users on January 1st at 00:00:00 UTC wishing them a happy new year.
읽는 시간 3분최근 업데이트: 12시간 전

이 샘플은 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 Configuration Viewer, Scheduler Configuration Editor, Scheduler Configuration Viewer를 선택합니다.
    • Admin 드롭다운에서 Unity Environments Viewer를 선택합니다.
  3. Save를 선택합니다.
  4. Add Key를 선택합니다.
  5. base64 인코딩을 사용하여 Key IDSecret key를 인코딩합니다. 포맷은 ‘key_id:secret_key’입니다. 이 값을 기록해 둡니다.
자세한 내용은 인증을 참고하십시오.

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 에디터와 연결합니다. Unity Cloud Dashboard에서 UGS 프로젝트 ID를 확인할 수 있습니다.
  1. Unity 에디터에서 Edit > Project Settings > Services를 선택합니다.
  2. 프로젝트를 연결합니다.
  • 프로젝트에 Unity 프로젝트 ID가 없는 경우 다음 단계를 진행합니다.
  1. Create a Unity Project ID > Organizations를 선택한 다음 드롭다운 메뉴에서 조직을 선택합니다.
  2. Create project ID를 선택합니다.
  • Unity 프로젝트 ID가 있는 경우 다음 단계를 진행합니다.
  1. Use an existing Unity project ID를 선택합니다.
  2. 드롭다운 메뉴에서 조직과 프로젝트를 선택합니다.
  3. Link project ID를 선택합니다.
Unity 프로젝트 ID가 표시되고 이제 Unity 서비스에 프로젝트가 연결됩니다.
UnityEditor.CloudProjectSettings.projectId
를 사용하여 Unity 에디터 스크립트에서 프로젝트 ID에 액세스할 수도 있습니다.

SDK 설치

다음 단계를 따라 Unity 에디터용 최신 Cloud Code 패키지를 설치합니다.
  1. Unity 에디터에서 Window > Package Manager를 엽니다.
  2. Package Manager에서 Unity Registry 목록 뷰를 선택합니다.
  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"}