This document is about: PUN 1
SWITCH TO

PUN Classic (v1), PUN 2, Bolt는 휴업 모드입니다. Unity2022에 대해서는 PUN 2에서 서포트하지만, 신기능의 추가는 없습니다. 현재 이용중인 고객님의 PUN 및 Bolt 프로젝트는 중단되지 않고, 퍼포먼스나 성능이 떨어지는 일도 없습니다. 앞으로의 새로운 프로젝트에는 Photon Fusion 또는 Quantum을 사용해 주십시오.

Photon VIVEPORT 인증

개요

Photon 인증 프로바이더로 VIVEPORT를 추가하는 것은 쉽습니다.

VIVEPORT AppId와 VIVEPORT AppSecret이 필요 합니다. AppSecret 신청을 위해 VIVEPORT 컨텐츠 팀(store@viveport.com)으로 연락하십시오. 이 단계는 자동화되어 있지 않으므로, 먼저 진행 하시는 것이 좋습니다.

어플리케이션 설정

첫 번째 단계로, Photon 어플리케이션의 관리화면에서 VIVEPORT 인증을 설정해야 합니다.

어플리케이션의 "관리" 페이지로 이동하고 아래로 스크롤하여 "인증" 섹션으로 이동합니다.
한 번의 클릭으로 "HTC Vive" 인증 프로바이더를 추가하거나 편집할 수 있습니다. 다음 사항이 필요합니다:

  • appid: 귀하의 VIVEPORT 앱 ID.
  • appsecret: 귀하의 VIVEPORT 앱 Secret.

VIVEPORT AppId는 VIVEPORT 개발자 콘솔에서 확인하실 수 있습니다. 귀하의 어플리케이션을 선택하고 "VIVEPORT 목록" 페이지를 오픈합니다.
AppSecret 신청을 위해서는 VIVEPORT 컨텐츠 팀 (store@viveport.com)으로 연락해야 합니다.

클라이언트 코드

Photon은 VIVEPORT API에서 제공하는 임시 토큰을 사용하여 VIVEPORT 사용자임을 확인합니다.
VIVEPORT SDK 를 다운로드하고 zip 파일의 Unity 패키지를 프로젝트로 임포트 하십시오.

VIVEPORT 토큰 얻기

Photon에 연결하기 전에 클라이언트는 VIVEPORT에 로그인하여 세션 토큰을 받아야 합니다.
다음 워크플로우는 필수 단계를 요약한 것입니다. 전체 코드는 VIVEPORT SDK에 있는 VIVEPORTDemo.cs에서 확인할 수 있습니다.

VIVEPORT의 경우와 마찬가지로, 첫 번째 단계는 VIVEPORT AppId를 사용하여 API를 init 하는 것입니다.

C#

//...

Api.Init(InitStatusHandler, APP_ID);

//...

private static void InitStatusHandler(int nResult)
{
    if (nResult == 0)
    {
        bInit = true;
        bIsReady = false;
        ViveSessionToken = string.Empty;
        bArcadeIsReady = false;
        Viveport.Core.Logger.Log("InitStatusHandler is successful");
    }
    else
    {
        // Init error, close your app and make sure your app ID is correct or not.
        bInit = false;
        Viveport.Core.Logger.Log("InitStatusHandler error : " + nResult);
    }
}

//...

init 후 (즉, InitStatusHandler()내), 토큰이 준비되었는지 확인하고 Viveport.Token.IsReady를 호출합니다:

C#

//...

Token.IsReady(IsTokenReadyHandler);

//...

private static void IsTokenReadyHandler(int nResult)
{
    if (nResult == 0)
    {
        bTokenIsReady = true;
        Viveport.Core.Logger.Log("IsTokenReadyHandler is successful");
    }
    else
    {
        bTokenIsReady = false;
        Viveport.Core.Logger.Log("IsTokenReadyHandler error: " + nResult);
    }
}

//...

이제 클라이언트가 유효한 VIVEPORT 사용자임을 증명하는 세션 토큰을 얻었습니다.

C#

//...

Token.GetSessionToken(GetSessionTokenHandler);

//...

private static void GetSessionTokenHandler(int nResult, string message)
{
    if (nResult == 0)
    {
        Viveport.Core.Logger.Log("GetSessionTokenHandler is successful, token:" + message);

        // Photon:
        // With the viveport token, we can set the auth values for Photon and connect / auth.
        // We store the token for later use.
        ViveSessionToken = message;
    }
    else
    {
        if (message.Length != 0)
        {
            Viveport.Core.Logger.Log("GetSessionTokenHandler error: " + nResult + ", message:" + message);
        }
        else
        {
            Viveport.Core.Logger.Log("GetSessionTokenHandler error: " + nResult);
        }
    }
}

인증하기

ViveSessionToken은 클라이언트가 Photon VIVEPORT 인증을 위해 필요한 유일한 값입니다.

CustomAuthenticationType.Viveport 을 사용하여 "userToken" AuthParameter를 설정하십시오.

C#

//...

    if (PhotonNetwork.AuthValues == null)
    {
        PhotonNetwork.AuthValues = new AuthenticationValues();
    }

    PhotonNetwork.AuthValues.AuthType = CustomAuthenticationType.Viveport;
    PhotonNetwork.AuthValues.AddAuthParameter("userToken", ViveSessionToken);
    // do not set PhotonNetwork.AuthValues.Token or authentication will fail
    if (!PhotonNetwork.ConnectUsingSettings())
    {
        Debug.LogWarning("Could not PhotonNetwork.ConnectUsingSettings(). Check settings.");
    }
    
//...
Back to top