应用指南
下载最新版本
将所下载示例项目中包含的Plugins/CafeSDKPlugin文件夹复制到项目中后,根据操作系统,按照如下步骤设置开发环境。
2.1 Android设置
将所下载示例项目中包含的Build/Android文件夹下的如下文件和文件夹复制到项目中。
ManifestApplicationAdditions.txt
2.2 iOS设置
在DefaultEngine.ini文件中,添加如下项目设置。
AdditionalLinkerFlags=-ObjC
AdditionalShippingLinkerFlags=-ObjC
AdditionalPlistData=<key>CFBundleURLTypes</key> <array> <dict> <key>CFBundleURLSchemes</key> <array> <string>gLinkSample</string> </array> </dict> </array><key>NSAppTransportSecurity</key><dict><key>NSAllowsArbitraryLoads</key><true/></dict> <key>LSApplicationQueriesSchemes</key><array><string>navercafe</string><string>naversearchapp</string><string>naversearchthirdlogin</string></array> <key>CFBundleURLTypes</key><array><dict><key>CFBundleTypeRole</key><string>Editor</string><key>CFBundleURLSchemes</key><array><string>gLinkSample</string></array></dict></array><key>NSPhotoLibraryUsageDescription</key><string>Access your photos to create a post.</string>
在Build.cs文件中添加如下框架设置。
if (Target.Platform == UnrealTargetPlatform.IOS)
{
// Add framework
PublicAdditionalFrameworks.Add(
new UEBuildFramework(
"NaverCafeSDK",
"../../ThirdPartyFrameworks/iOS/NaverCafeSDK.embeddedframework.zip",
"Resources/NaverCafeSDK.bundle"
)
);
PublicAdditionalFrameworks.Add(
new UEBuildFramework(
"NaverLogin",
"../../ThirdPartyFrameworks/iOS/NaverLogin.embeddedframework.zip",
"Resources/NaverAuth.bundle"
)
);
PublicAdditionalFrameworks.Add(
new UEBuildFramework(
"AFNetworking",
"../../ThirdPartyFrameworks/iOS/AFNetworking.embeddedframework.zip"
)
);
PublicAdditionalFrameworks.Add(
new UEBuildFramework(
"SDWebImage",
"../../ThirdPartyFrameworks/iOS/SDWebImage.embeddedframework.zip"
)
);
PublicAdditionalFrameworks.Add(
new UEBuildFramework(
"FLAnimatedImage",
"../../ThirdPartyFrameworks/iOS/FLAnimatedImage.embeddedframework.zip"
)
);
PublicAdditionalFrameworks.Add(
new UEBuildFramework(
"ApiGateway",
"../../ThirdPartyFrameworks/iOS/ApiGateway.embeddedframework.zip"
)
);
PublicFrameworks.AddRange(
new string[] {
"UIKit",
"Foundation",
"MediaPlayer",
"SystemConfiguration",
"Security",
"MobileCoreServices",
"GameKit",
"AssetsLibrary",
}
);
PublicWeakFrameworks.Add("ReplayKit");
}
3. 初始化
根据PLUG SDK支持的语言,按照如下方法将PLUG SDK初始化。
3.1 PLUG SDK初始化(仅支持韩语 - NAVERCafe)
将仅支持韩语的PLUG SDK初始化时,设置如下初始化信息。
在“使用NAVER ID登录开发人员中心”注册应用程序后获得的客户端ID(ClientId)和客户端Secret(ClientSecret)。
在NAVERCafe创建Cafe后获得的Cafe ID。
在“使用NAVER ID登录开发人员中心”注册应用程序时输入的URL Scheme。
if (FCafeSDKPluginModule::IsAvailable())
{
UCafeSdkBlueprintLibrary::Init("U5ZHoj_OStOHOJ8mec_s", "piPHPA9i4E", 28334359);
}
3.2 PLUG SDK初始化(仅支持外语)
将仅支持外语的PLUG SDK初始化时,设置如下初始化信息。
通过PLUG SDK合作申请获得的Consumer Key和Consumer Secret
通过PLUG SDK合作申请获得的Community No和Lounge No
consumerKey:创建社区后获得的Consumer Key
consumerSecretKey:创建社区后获得的Consumer Secret Key
cummunityNo:创建社区后获得的Cummunity No
loungeNo:创建lounge后获得的Lounge No
if (FCafeSDKPluginModule::IsAvailable())
{
/**
* @param consumerKey Consumer Key
* @param consumerSecretKey Consumer Secret Key
* @param communityNo 社区编号
* @param loungeNo Lounge编号
*/
UCafeSdkBlueprintLibrary::InitGlobal("PLUGKEY", "PLUGSECRET", 1, 58);
}
4. 启动PLUG SDK
完成初始化后,运行PLUG SDK。
4.1 StartHome()方法
StartHome()是启动PLUG SDK的方法。
UFUNCTION(BlueprintCallable, Category = "Naver CafeSdk")
static void StartHome();
4.2 ShowWidgetWhenUnloadSdk()方法
在PLUG SDK点击收起按钮时,使微件显示在界面上的方法。
UFUNCTION(BlueprintCallable, Category = "Naver CafeSdk")
static void ShowWidgetWhenUnloadSdk(bool bUse);
4.3 SetUseVideoRecord()方法
SetUseVideoRecord() 是使视频录制按钮显示在PLUG SDK微件界面上的方法。(iOS 9.0以上版本)
UFUNCTION(BlueprintCallable, Category = "Naver CafeSdk")
static void SetUseVideoRecord(bool bUse);
4.4 回调委托
设置回调委托,利用回调函数传递PLUG SDK中发生的用户事件。
通过回调委托调用的方法,可执行运行或退出PLUG SDK、发帖(图片/视频添加数量)、注册、评论或投票等任务。
static FOnCafeSdkStarted OnCafeSdkStarted;
static FOnCafeSdkStopped OnCafeSdkStopped;
static FOnCafeSdkClickAppSchemeBanner OnCafeSdkClickAppSchemeBanner;
static FOnCafeSdkJoined OnCafeSdkJoined;
static FOnCafeSdkPostedArticle OnCafeSdkPostedArticle;
static FOnCafeSdkPostedComment OnCafeSdkPostedComment;
static FOnCafeSdkRecordFinish OnCafeSdkRecordFinish;
static FOnCafeSdkDidVote OnCafeSdkDidVote;
支持国外社区和韩国国内NAVERCafe的PLUG初始化
对于同时支持国外社区和韩国国内NAVER Cafe的PLUG,需要同时完成为支持国外社区的初始化设置和为支持韩国国内NAVER Cafe的初始化设置。
默认通道设置
PLUG中不同语言社区的默认通道均适用设备所设语言。
下面是将默认通道设置为特定语言的示例。
void ACafeSDKSampleProjectGameMode::InitGame(const FString& MapName, const FString& Options, FString& ErrorMessage)
{
AGameMode::InitGame(MapName, Options, ErrorMessage);
if (FCafeSDKPluginModule::IsAvailable())
{
UCafeSdkBlueprintLibrary::SetChannelCode("en");
...
}
}
PLUG启动与退出
以特定标签被选择的状态启动PLUG或退出PLUG。
StartHome()方法
以主页标签被选择的状态启动PLUG。
static void StartHome()
下面是实现StartHome()方法的示例。
/**
* 以主页标签启动
*/
UFUNCTION(BlueprintCallable, Category = "Naver CafeSdk")
static void StartHome();
横屏模式及竖屏模式
PLUG同时支持横屏模式和竖屏模式。
Android
Android环境下,无需另外设置,系统将根据界面的横竖状态自动应用横屏或竖屏模式。
iOS
iOS环境下,利用setOrientationIsLandscape: 方法应用横屏或竖屏模式。
下面是以横屏模式运行PLUG的示例。
//缺省值为YES
//横屏模式
[[NCSDKManager getSharedInstance] setOrientationIsLandscape:YES];
下面是以竖屏模式运行PLUG的示例
//竖屏模式
[[NCSDKManager getSharedInstance] setOrientationIsLandscape:NO];
透明度调节
如果利用PLUG界面左上方的透明度调节滑块调节透明度,则可以同时使用游戏和Cafe服务。
|
Alpha值100% / 向PLUG报告点击事件 Alpha值100%以下 / 向游戏报告点击事件 |
Android
在Android环境下,利用setTransparentable()方法设置是否使用透明度调节滑块。
public static void setTransparentable(Activity activity, boolean isTransparentable)
将isTransparentable参数值设置为true时,可以使用透明度调节滑块(缺省值:true).
下面是使用透明度调节滑块的示例。
/**
* 设置是否使用透明度调节滑块
*
* @param isTransparentable 确定是否能使用透明度调节功能的boolean值
*/
Glink.setTransparentable(activity, true)
iOS
在iOS环境下是否使用透明度调节滑块,用disableTransparentSlider: 方法设置。
(void)disableTransparentSlider:(BOOL)disable;
将disable参数值设置为YES时,可以使用透明度调节滑块(缺省值:YES)。
下面是使用透明度调节滑块的示例。
/*
取消透明度调节功能
default : YES
*/
//使用透明度调节功能
[[NCSDKManager getSharedInstance] disableTransparentSlider:YES];
下面是不使用透明度调节滑块的示例。
//取消透明度功能
[[NCSDKManager getSharedInstance] disableTransparentSlider:NO];
微件
微件是点击PLUG收起按钮时自动显示在界面中的构成要素。利用微件可在游戏内的任何环境下使用PLUG。
微件显示
点击PLUG的收起按钮时,利用ShowWidgetWhenUnloadSdk()方法设置是否显示微件。
static void ShowWidgetWhenUnloadSdk(bool show)
如果将show参数值设置为true,收起PLUG窗口时显示微件(缺省值:true)。
下面是显示微件的示例。
/**
* 决定PLUG窗口收起时是否显示微件
*
* @param show 确定是否显示微件的Boolean值
*/
UFUNCTION(BlueprintCallable, Category = "Naver CafeSdk")
static void ShowWidgetWhenUnloadSdk(bool bUse)
微件默认位置设置
微件在第一次运行时,显示在界面左侧中央位置。如果要设置微件第一次运行时的默认显示位置,使用SetWidgetStartPosition()方法。
但如果是在用户移动微件位置后重新运行的情况,则显示在用户移动后的最终位置。
static void SetWidgetStartPosition(bool bIsLeft, int32 HeightPercentage);
下面是将微件默认位置设置在界面右侧距上部20%处的示例。
/**
* bIsLeft:true时显示在左侧,false时显示在右侧。
* HeightPercentage:竖直方向的位置可使用百分数指定。
*/
UCafeSdkBlueprintLibrary::SetWidgetStartPosition(false, 20);
截屏
点击微件的截屏按钮可以截取游戏画面。
截屏按钮
点击截屏按钮截屏的功能,通过注册微件截屏按钮的点击监听器OnScreenshotCaptured来实现。
static FOnScreenshotCaptured& OnScreenshotCaptured()
下面是实现微件截屏按钮点击监听器的示例。.
/**
* 注册截屏按钮点击回调函数
*/
void ACafeSDKSampleProjectGameMode::InitGame(const FString& MapName, const FString& Options, FString& ErrorMessage)
{
...
GEngine->GameViewport->OnScreenshotCaptured().AddUObject(this,
&ACafeSDKSampleProjectGameMode::OnScreenshotCaptured);
...
}
}
/**
* 设置微件截屏按钮点击监听器
*/
void ACafeSDKSampleProjectGameMode::OnScreenshotCaptured(int32 Width, int32 Height, const TArray<FColor>& Colors)
{
auto Bitmap = TArray<FColor>(Colors);
GetHighResScreenshotConfig().MergeMaskIntoAlpha(Bitmap);
FIntRect SourceRect(0, 0, GScreenshotResolutionX, GScreenshotResolutionY);
if (GIsHighResScreenshot)
{
SourceRect = GetHighResScreenshotConfig().CaptureRegion;
}
FString ScreenshotName = FScreenshotRequest::GetFilename();
if (!FPaths::GetExtension(ScreenshotName).IsEmpty())
{
ScreenshotName = FPaths::GetBaseFilename(ScreenshotName, false);
ScreenshotName += TEXT(".png");
}
// Save the contents of the array to a png file.
TArray<uint8> CompressedBitmap;
FImageUtils::CompressImageArray(Width, Height, Bitmap, CompressedBitmap);
FFileHelper::SaveArrayToFile(CompressedBitmap, *ScreenshotName);
#if PLATFORM_ANDROID
extern FString GFilePathBase;
FString BasePath = GFilePathBase + TEXT("/UE4Game/") + FApp::GetGameName() + TEXT("/") + FApp::GetGameName() + TEXT("/Saved/Screenshots/");
FString ScreenshotPath = FPaths::ConvertRelativePathToFull(BasePath, ScreenshotName);
UCafeSdkBlueprintLibrary::StartImageWrite(TEXT("file://") + ScreenshotPath);
#elif PLATFORM_IOS
FString Result = ScreenshotName;
Result.ReplaceInline(TEXT("../"), TEXT(""));
Result.ReplaceInline(TEXT(".."), TEXT(""));
Result.ReplaceInline(FPlatformProcess::BaseDir(), TEXT(""));
FString WritePathBase = FString([NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0]) + TEXT("/");
UCafeSdkBlueprintLibrary::StartImageWrite(WritePathBase + Result);
#endif
}
截屏功能使用设置
使用SetUseScreenshot()方法设置是否使用截屏功能。
static void SetUseScreenshot(boolean use);
将use参数值设置为true时,微件显示截屏按钮(缺省值:true)。
/**
* 使用截屏功能
*/
UCafeSdkBlueprintLibrary::SetUseScreenshot(true);
视频录制
在微件界面点击视频录制按钮可录制游戏画面。
视频录制结束后,需要处理的内容通过注册录制结束监听器OnCafeSdkRecordFinish来实现。
static FOnCafeSdkRecordFinish OnCafeSdkRecordFinish;
下面是实现录制结束监听器的示例。
/**
* 注册录制结束回调
*/
void ACafeSDKSampleProjectGameMode::InitGame(const FString& MapName, const FString& Options, FString& ErrorMessage)
{
...
FCafeSDKPluginModule::OnCafeSdkRecordFinish.AddUObject(this,
&ACafeSDKSampleProjectGameMode::OnCafeSdkRecordFinish);
...
}
}
/**
* 设置录制结束监听器
*/
void ACafeSDKSampleProjectGameMode::OnCafeSdkRecordFinish(const FString& FileUri)
{
UCafeSdkBlueprintLibrary::StartVideoWrite(FileUri);
}
视频录制
点击微件视频录制按钮可在游戏过程中录制游戏画面。
视频录制功能使用设置
使用SetUseVideoRecord()方法设置是否使用视频录制功能。
static void SetUseVideoRecord(bool use)
将use参数值设置为true时,微件显示视频录制按钮(缺省值:false)。
低于Android 5.0或iOS 9.0版本的设备,即使将use参数值设置为true,也不会在微件上显示视频录制按钮。
下面是使用视频录制功能的示例。
/**
* 决定是否使用视频录制功能
*
* @param use 确定是否使用视频录制功能的boolean值
*/
...
UCafeSdkBlueprintLibrary::SetUseVideoRecord(true);
...
录制结束回调监听器
视频录制结束后,需要处理的内容通过注册监听器OnCafeSdkRecordFinish来实现。
static FOnCafeSdkRecordFinish OnCafeSdkRecordFinish;
下面是实现录制结束监听器的示例。
/**
* 注册录制结束回调
*/
void ACafeSDKSampleProjectGameMode::InitGame(const FString& MapName, const FString& Options, FString& ErrorMessage)
{
...
FCafeSDKPluginModule::OnCafeSdkRecordFinish.AddUObject(this,
&ACafeSDKSampleProjectGameMode::OnCafeSdkRecordFinish);
...
}
}
/**
* 设置录制结束监听器
*/
void ACafeSDKSampleProjectGameMode::OnCafeSdkRecordFinish(const FString& FileUri)
{
UCafeSdkBlueprintLibrary::StartVideoWrite(5, TEXT("subject"), TEXT("text"), FileUri);
}
App Scheme处理
在游戏中,点击PLUG主页显示的横幅图片,即可移动至App Scheme运行游戏功能。
用于引导前往App Scheme的横幅图片在Cafe管理菜单下添加。
Android
Android环境下存在可前往App Scheme的横幅图片时,如果按照下面的方法设置OnCafeSdkClickAppSchemeBanner,则可以实现发生点击事件时处理App Scheme的功能。
static FOnCafeSdkClickAppSchemeBanner OnCafeSdkClickAppSchemeBanner;
下面是实现App Scheme处理的监听器示例。
void ACafeSDKSampleProjectGameMode::InitGame(const FString& MapName, const FString& Options, FString& ErrorMessage)
{
...
FCafeSDKPluginModule::OnCafeSdkClickAppSchemeBanner.AddUObject(this,
&ACafeSDKSampleProjectGameMode::OnCafeSdkClickAppSchemeBanner);
...
}
}
// 设置App Scheme点击监听器
void ACafeSDKSampleProjectGameMode::OnCafeSdkClickAppSchemeBanner(const FString& AppScheme)
{
FString Message = FString::Printf(TEXT("OnCafeSdkClickAppSchemeBanner: %s"), *AppScheme);
ShowMessage(Message);
}
iOS
在iOS环境下,点击前往App Scheme的横幅图片,即可运行openURL:方法来处理App Scheme的功能,按照如下示例设置AppDelegate。
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {
...
//利用AppDelegate处理添加至管理菜单的App Scheme
//ex : gLinkSample://test
if ([[url scheme] isEqualToString:@"gLinkSample"]) {
if ([[url host] isEqualToString:@"test"]) {
//todo
}
}
...
}
回调监听器
PLUG中发生的事件通过注册回调监听器来处理。
Unreal版NAVER Cafe PLUG库中注册有如下回调监听器。
void ACafeSDKSampleProjectGameMode::InitGame(const FString& MapName, const FString& Options, FString& ErrorMessage)
{
AGameMode::InitGame(MapName, Options, ErrorMessage);
if (FCafeSDKPluginModule::IsAvailable())
{
UCafeSdkBlueprintLibrary::Init("U5ZHoj_OStOHOJ8mec_s", "piPHPA9i4E", 28334359);
//启动PLUG
FCafeSDKPluginModule::OnCafeSdkStarted.AddUObject(this,
&ACafeSDKSampleProjectGameMode::OnCafeSdkStarted);
//退出PLUG
FCafeSDKPluginModule::OnCafeSdkStopped.AddUObject(this,
&ACafeSDKSampleProjectGameMode::OnCafeSdkStopped);
//App Scheme
FCafeSDKPluginModule::OnCafeSdkClickAppSchemeBanner.AddUObject(this,
&ACafeSDKSampleProjectGameMode::OnCafeSdkClickAppSchemeBanner);
//注册Cafe
FCafeSDKPluginModule::OnCafeSdkJoined.AddUObject(this,
&ACafeSDKSampleProjectGameMode::OnCafeSdkJoined);
//发帖
FCafeSDKPluginModule::OnCafeSdkPostedArticle.AddUObject(this,
&ACafeSDKSampleProjectGameMode::OnCafeSdkPostedArticle);
//发表评论
FCafeSDKPluginModule::OnCafeSdkPostedComment.AddUObject(this,
&ACafeSDKSampleProjectGameMode::OnCafeSdkPostedComment);
//贴文内投票
FCafeSDKPluginModule::OnCafeSdkDidVote.AddUObject(this,
&ACafeSDKSampleProjectGameMode::OnCafeSdkDidVote);
//微件视频录制结束
FCafeSDKPluginModule::OnCafeSdkRecordFinish.AddUObject(this,
&ACafeSDKSampleProjectGameMode::OnCafeSdkRecordFinish);
//截屏
GEngine->GameViewport->OnScreenshotCaptured().AddUObject(this,
&ACafeSDKSampleProjectGameMode::OnScreenshotCaptured);
}
}
启动PLUG监听器
OnCafeSdkStarted是处理PLUG启动时所发生事件的回调监听器。
static FOnCafeSdkStarted OnCafeSdkStarted;
下面是实现启动PLUG监听器的示例。
// 设置启动PLUG监听器
void ACafeSDKSampleProjectGameMode::OnCafeSdkStarted()
{
ShowMessage("OnCafeSdkStarted");
}
退出PLUG监听器
OnCafeSdkStopped是处理退出PLUG时所发生事件的回调监听器。
static FOnCafeSdkStopped OnCafeSdkStopped;
下面是实现退出PLUG监听器的示例。
// 设置退出PLUG监听器
void ACafeSDKSampleProjectGameMode::OnCafeSdkStopped()
{
ShowMessage("OnCafeSdkStopped");
}
App Scheme监听器
OnCafeSdkClickAppSchemeBanner是在Android环境下,处理游戏用户点击前往App Scheme的横幅图片时所发生事件的回调监听器。
static FOnCafeSdkClickAppSchemeBanner OnCafeSdkClickAppSchemeBanner;
下面是实现App Scheme监听器的示例。.
// 设置App Scheme监听器
void ACafeSDKSampleProjectGameMode::OnCafeSdkClickAppSchemeBanner(const FString& AppScheme)
{
FString Message = FString::Printf(TEXT("OnCafeSdkClickAppSchemeBanner: %s"), *AppScheme);
ShowMessage(Message);
}
Cafe 注册监听器
OnCafeSdkJoined是处理游戏用户通过PLUG注册Cafe时所发生事件的回调监听器。
static FOnCafeSdkJoined OnCafeSdkJoined;
下面是实现Cafe注册监听器的示例。
// 设置Cafe注册监听器
void ACafeSDKSampleProjectGameMode::OnCafeSdkJoined()
{
ShowMessage("OnCafeSdkJoined");
}
发帖监听器
OnCafeSdkPostedArticle是处理用户在PLUG发帖时所发生事件的回调监听器。
static FOnCafeSdkPostedArticle OnCafeSdkPostedArticle;
下面是实现发帖监听器的示例。
/** 设置发帖监听器
* @param menuId 发帖的menuId
* @param imageCount 同附图片文件的数量
* @param videoCount 同附视频文件的数量
**/
void ACafeSDKSampleProjectGameMode::OnCafeSdkPostedArticle(int32 MenuId, int32 ImageCount, int32 VideoCount)
{
FString Message = FString::Printf(TEXT("OnCafeSdkPostedArticle: %d, %d, %d"), MenuId, ImageCount, VideoCount);
ShowMessage(Message);
}
评论发表监听器
OnCafeSdkPostedComment是处理用户在PLUG发表评论时所发生事件的回调监听器。.
static FOnCafeSdkPostedComment OnCafeSdkPostedComment;
下面是实现评论发表监听器的示例。
// 设置评论发表监听器
void ACafeSDKSampleProjectGameMode::OnCafeSdkPostedComment(int32 ArticleId)
{
FString Message = FString::Printf(TEXT("OnCafeSdkPostedComment: %d"), ArticleId);
ShowMessage(Message);
}
投票结束监听器
OnCafeSdkDidVote是处理用户在PLUG参与发起投票的贴文投票活动时所发生事件的回调监听器。
static FOnCafeSdkDidVote OnCafeSdkDidVote;
下面是实现投票结束监听器的示例。
// 设置投票结束监听器
void ACafeSDKSampleProjectGameMode::OnCafeSdkDidVote(int32 ArticleId)
{
FString Message = FString::Printf(TEXT("OnCafeSdkDidVote: %d"), ArticleId);
ShowMessage(Message);
}
截屏按钮点击监听器
OnScreenshotCaptured是处理用户点击微件上截屏按钮时所发生事件的回调监听器。关于截屏按钮的详细内容,请参考“微件”部分。
static FOnScreenshotCaptured& OnScreenshotCaptured()
下面是实现截屏按钮点击监听器的示例。只有通过回调监听器设置截屏功能,才能在点击截屏按钮时进行截屏。
/**
* 设置微件截屏按钮点击监听器
*/
void ACafeSDKSampleProjectGameMode::OnScreenshotCaptured(int32 Width, int32 Height, const TArray<FColor>& Colors)
{
auto Bitmap = TArray<FColor>(Colors);
GetHighResScreenshotConfig().MergeMaskIntoAlpha(Bitmap);
FIntRect SourceRect(0, 0, GScreenshotResolutionX, GScreenshotResolutionY);
if (GIsHighResScreenshot)
{
SourceRect = GetHighResScreenshotConfig().CaptureRegion;
}
FString ScreenshotName = FScreenshotRequest::GetFilename();
if (!FPaths::GetExtension(ScreenshotName).IsEmpty())
{
ScreenshotName = FPaths::GetBaseFilename(ScreenshotName, false);
ScreenshotName += TEXT(".png");
}
// Save the contents of the array to a png file.
TArray<uint8> CompressedBitmap;
FImageUtils::CompressImageArray(Width, Height, Bitmap, CompressedBitmap);
FFileHelper::SaveArrayToFile(CompressedBitmap, *ScreenshotName);
#if PLATFORM_ANDROID
extern FString GFilePathBase;
FString BasePath = GFilePathBase + TEXT("/UE4Game/") + FApp::GetGameName() + TEXT("/") + FApp::GetGameName() + TEXT("/Saved/Screenshots/");
FString ScreenshotPath = FPaths::ConvertRelativePathToFull(BasePath, ScreenshotName);
UCafeSdkBlueprintLibrary::StartImageWrite(-1, "", "", TEXT("file://") + ScreenshotPath);
#elif PLATFORM_IOS
FString Result = ScreenshotName;
Result.ReplaceInline(TEXT("../"), TEXT(""));
Result.ReplaceInline(TEXT(".."), TEXT(""));
Result.ReplaceInline(FPlatformProcess::BaseDir(), TEXT(""));
FString WritePathBase = FString([NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0]) + TEXT("/");
UCafeSdkBlueprintLibrary::StartImageWrite(-1, "", "", WritePathBase + Result);
#endif
}
录制结束监听器
OnCafeSdkRecordFinish是处理PULG视频录制结束时所发生事件的回调监听器。
static FOnCafeSdkRecordFinish OnCafeSdkRecordFinish;
下面是实现录制结束监听器的示例。
/** 设置录制结束监听器
* 决定是否使用视频录制功能
*
* @param uri 所录制视频文件的路径URI
*/
void ACafeSDKSampleProjectGameMode::OnCafeSdkRecordFinish(const FString& FileUri)
{
UCafeSdkBlueprintLibrary::StartVideoWrite(5, TEXT("subject"), TEXT("text"), FileUri);
}
游戏ID绑定
PLUG支持绑定用户的游戏ID和CafeID来进行管理。绑定后的游戏ID和Cafe ID目录可在Cafe的管理菜单下确认。
如果要绑定游戏ID和Cafe ID,使用SyncGameUserId()方法。
static void SyncGameUserId(FString GameUserId)
下面是绑定游戏ID和Cafe ID的示例。
/**
* 绑定游戏ID和Cafe ID
*
* @param gameUserId 游戏ID
*/
void ACafeSDKSampleProjectGameMode::InitGame(const FString& MapName, const FString& Options, FString& ErrorMessage)
{
...
UCafeSdkBlueprintLibrary::SyncGameUserId("userGameID");
...
}
主题颜色变更
可变更PLUG的主题颜色。
如果要更改主题颜色,使用SetThemeColor()方法。
/**
* ThemeColorCSSString参数的缺省值为‘#00c73c’
* TabBackgroundColorCSSString参数的缺省值为‘#44484e’
* TabBackgroundColorCSSString参数建议使用缺省值
**/
void UCafeSdkBlueprintLibrary::SetThemeColor(FString ThemeColorCSSString, FString TabBackgroundColorCSSString)
ThemeColorCSSString:主题默认使用的颜色(缺省值:#00c73c)。
TabBackgroundColorCSSString:标签菜单的背景颜色(缺省值:#44484e)。建议使用缺省值。
注意 CSS颜色值内不得输入alpha值。
下面是更改主题颜色的示例。
UCafeSdkBlueprintLibrary::SetThemeColor("#00c73c", "#44484e");
NAVER登录
在应用程序中使用“使用NAVER ID登录”功能。
NAVER登录功能使用的是NaverIdLoginBlueprintLibrary.h文件。
Init()方法
使用以下初始化信息对NAVER登录功能进行初始化。.
在“使用NAVER ID登录开发人员中心”注册应用程序后获得的客户端ID。
在“使用NAVER ID登录开发人员中心”注册应用程序后获得的客户端Secret。
下面是将NAVER登录功能初始化的示例。
UNaverIdLoginBlueprintLibrary::Init("197CymaStozo7x5r2qR5", "evCgKH1kJL");
Login()方法
使用NAVER ID登录。
UNaverIdLoginBlueprintLibrary::Login();
完成登录后发生的事件,通过如下委托进行处理。
FCafeSDKPluginModule::OnLoggedIn.AddUObject(this,
&ACafeSDKSampleProjectGameMode::OnCafeSdkLoggedIn);
void ACafeSDKSampleProjectGameMode::OnCafeSdkLoggedIn(bool bSuccess) {
// handle event.
}
Logout()方法
用于退出登录。
UNaverIdLoginBlueprintLibrary::Logout();
IsLogin()方法
确认是否为登录状态。
UNaverIdLoginBlueprintLibrary::IsLogin();
GetProfile()方法
查询登录用户的基本信息(邮箱地址、昵称、头像、生日、年龄段)。
UNaverIdLoginBlueprintLibrary::GetProfile();
要查询的信息通过注册委托设置。
FCafeSDKPluginModule::OnGetProfile.AddUObject(this,
&ACafeSDKSampleProjectGameMode::OnCafeSdkGetProfile);
void ACafeSDKSampleProjectGameMode::OnCafeSdkGetProfile(const FString& JsonString) {
// handle event.
}