用戶資料 API

VIVEPORT SDK 提供了簡單方法取得用戶資訊。

如何使用用戶資料 API

備註

請您記住應該要調用 頂級 API - Api.Init()統計資料和成就 API - UserStats.IsReady() 並檢查回傳函數值,那麼您會知道您現在是否可以使用用戶資料 API。並請您記得在使用 VIVEPORT SDK 結束後要調用 頂級 API - Api.Shutdown() 來清除運行庫。

在內容中取得用戶資料是很容易:

  1. 您可以使用 GetUserId() 來獲取用戶的公共 ID。

  2. 您可以使用 GetUserName() 取得用戶的名稱,用戶可以在用戶數據中設定想要呈現的 顯示名稱。呈現名稱規則是,如果用戶有設定顯示名稱,第一優先是顯示名稱,如果沒有顯示名稱,那系統會採用用戶的 名字

    _images/DisplayName.zh_TW.png
  3. 您可以使用 GetUserAvatarUrl() 來獲取用戶頭像的 URL 鏈接。

備註

GetUserId() 的返回字符串格式是 ASCII,而 GetUserName() 的返回字符串格式是 UTF-8。

重要

請參閱 錯誤代碼故障排除 頁面,了解該如何解決您在使用 VIVEPORT SDK 時遇到的問題。

Unity 的詳細範例

using UnityEngine;
using System;
using Viveport;

/** Language: C# */
public class ViveportDemo : MonoBehaviour
{
   static string VIVEPORT_ID = "bd67b286-aafc-449d-8896-bb7e9b351876";

   // Use this for initialization
   void Start ()
   {
       Api.Init(InitStatusHandler, VIVEPORT_ID);
   }

   private static void InitStatusHandler(int nResult)
   {
       Viveport.Core.Logger.Log("Init(): " + nResult);
       if (nResult != 0)
       {
          Viveport.Core.Logger.Log("Init setup error ...");
          // Handle error
       }
       UserStats.IsReady(IsReadyHandler);
   }

   private static void IsReadyHandler(int nResult)
   {
       if (nResult != 0)
       {
          Viveport.Core.Logger.Log("Platform setup error ...");
          // Handle error
       }
       Viveport.Core.Logger.Log("UserId: " + User.GetUserId());
       Viveport.Core.Logger.Log("userName: " + User.GetUserName());
       Viveport.Core.Logger.Log("userAvatarUrl: " + User.GetUserAvatarUrl());
       // Do more things
   }
}

Unreal 的詳細範例

ViveportUserDemo.h

#include "Components/ActorComponent.h"
#include "ViveportApi.h"
#include "ViveportUser.h"
#include "ViveportType.h"

#include "ViveportUserDemo.generated.h"

UCLASS(ClassGroup = (Viveport), meta = (BlueprintSpawnableComponent))
class VIVEPORTSDK_API UViveportUserDemo : public UActorComponent
{
    GENERATED_BODY()

public:
    // Sets default values for this component's properties
    UViveportUserDemo();

    // Called when the game starts
    void BeginPlay() override;

    // Called every frame
    void TickComponent(
        float DeltaTime,
        ELevelTick TickType,
        FActorComponentTickFunction* ThisTickFunction
        ) override;
};

ViveportUserDemo.cpp

#include "ViveportSDKPrivatePCH.h"
#include "ViveportUserDemo.h"

// Sets default values for this component's properties
UViveportUserDemo::UViveportUserDemo()
{
    // Set this component to be initialized when the game starts, and to be ticked every frame.  You can turn these features
    // off to improve performance if you don't need them.
    bWantsBeginPlay = true;
    PrimaryComponentTick.bCanEverTick = true;
}

// Called when the game starts
void UViveportUserDemo::BeginPlay()
{
    Super::BeginPlay();

    const FString fstring = FString::Printf(TEXT("GetUserID=%s\nGetUserName=%s\nGetUserAvatarUrl=%s"),
                                            *UViveportUser::GetUserID(),
                                            *UViveportUser::GetUserName(),
                                            *UViveportUser::GetUserAvatarUrl());
    GEngine->AddOnScreenDebugMessage(-1, 15.0f, FColor::White, fstring);
}

// Called every frame
void UViveportUserDemo::TickComponent(float DeltaTime,
                                      ELevelTick TickType,
                                      FActorComponentTickFunction* ThisTickFunction)
{
    Super::TickComponent(DeltaTime, TickType, ThisTickFunction);
}