HumanDevil 프로젝트는 Facebook 계정을 연동하여 플레이 할 수 있다.
Android 같은 경우에는 다운받은 FacebookSDK.jar을 추가하여 직접 사용하였지만,
iOS나 Window같은 경우에는 OnlineSubsystem으로 Facebook이 제공이 된다.
필요한 Module이름은 OnlineSubsystemFacebook이며 아래와 같이 Project.Build.cs에 추가하면 된다.
if ( Target.Platform == UnrealTargetPlatform.IOS )
{
PrivateDependencyModuleNames.Add("OnlineSubsystemFacebook");
}
그 다음 필요한 것은 Config/DefaultEngine.ini 파일을 수정하는 것이다.
OnlineSubsystemFacebook 코드 내부에는 아래와 같은 코드가 있으며,
GConfig->GetBool(
TEXT("OnlineSubsystemFacebook"),
TEXT("bEnabled"),
bEnableFacebook,
GEngineIni);
bEnableFacebook 값이 false이면, OnlineSubsystemFacebook이 생성되지 않는다.
Config/DefaultEngine.ini 파일에 아래의 코드를 넣어준다.
[OnlineSubsystemFacebook]
bEnabled=true
그 다음으로 해야할 것은 .plist 파일을 수정하는 것인데, 이것은 빌드시에 매번 자동으로 생성이 되는것 이다.
우리가 필요한 정보를 넣기 위해선 에디터에서 추가하거나 직접 Config 파일에 추가하는 것인데,
에디터에서는 IOS 설정에서 Extra Plist Data에 필요한 데이터들을 추가하면 된다.
필요한 데이터는 Facebook Developer 사이트를 참고하면 된다.
<key>FacebookAppID</key>
<string>정보</string>
<key>FacebookDisplayName</key>
<string>정보</string>
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleURLSchemes</key>
<array>
<string>정보</string>
</array>
</dict>
</array>
이제 Facebook을 사용할곳에서 OnlineSubsystemFacebook.h를 포함한 후에 코드를 작성 하면된다.
간단히 Login 하는 방법을 나열하자면,
1. IOnlineSubsystem::Get(TEXT(“Facebook”)); 이와 같은 방법으로 OnlineSubsystem을 가져온다.
2. 가져온 시스템에서 GetIdentityInterface()를 이용하여 IdentityInterface를 얻어온 후, Login()를 호출하면 된다.
3. Login이 되던, 실패하던 어떠한 이벤트를 전달 받으려면 델리게이트를 추가해줘야 한다.
AddOnLoginCompleteDelegate_Handle(
0,
FOnLoginCompleteDelegate::CreateUObject(
this,
&Class::Function));
이와 같이 추가한 후, 전달받은 정보를 통하여 로직을 구성하면 된다.