이번 기록은 워밍업 작업으로 UPL 작성 과 플랫폼별 코드를 작성하여 안드로이드의 Native 코드를
호출 하는 튜토리얼입니다.
토스트는 간략하게 설명을 한다면
developer.android.com/guide/topics/ui/notifiers/toasts?hl=ko
처럼 안내메세지를 노출할 수 있는 기능입니다.
Toast 생성 코드는 Java 영역에서 구현을 하고
C++ 및 UPL로 UE4에서 Java 영역에 대한 호출 및 BP Library를 통해서 BP에서 쓸 수 있도록 구현을 합니다.
이 기능을 완료하면 앞으로 Admob 및 3rd party는 복붙 수준의 구현 난이도일 것입니다.
# 플랫폼별 코드 구현
MobileHelper 플러그인에 새로운 c++클래스를 추가할 것입니다.
클래스 마법사를 실행하여 플랫폼별( Android, iOS) 코드를 작성할 것입니다.
'없음' 으로 선택하고 '다음'을 선택합니다.
이름 : AndroidHelper
경로 : Android 폴더를 추가합니다.
'클래스 생성' 을 선택합니다.
AndroidHelper.h
1
2
3
4
5
6
7
8
9
|
class AndroidHelper : public IPlatformInterface
{
public:
AndroidHelper();
virtual ~AndroidHelper();
virtual void ShowToast(const FString& Msg) override;
};
|
cs |
ShowToast(...) : Jni를 통해 Android Toast를 호출 합니다.
AndroidHelper.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
#include "MobileHelper.h"
#define LOCTEXT_NAMESPACE "FMobileHelperModule"
void FMobileHelperModule::StartupModule()
{
#if PLATFORM_ANDROID
PlatformPtr = MakeShareable(new AndroidHelper());
#endif
}
void FMobileHelperModule::ShutdownModule()
{
// This function may be called during shutdown to clean up your module. For modules that support dynamic reloading,
// we call this function before unloading the module.
}
#undef LOCTEXT_NAMESPACE
IMPLEMENT_MODULE(FMobileHelperModule, MobileHelper)
|
cs |
Interfaces/PlatformInterface.h
1
2
3
4
5
|
class IPlatformInterface
{
public:
virtual void ShowToast(const FString& Msg) = 0;
};
|
cs |
MobileHelperBPLibrary.cpp
1
2
3
4
5
6
7
8
|
void UMobileHelperBPLibrary::ShowToastMessage(const FString& Msg)
{
#if PLATFORM_ANDROID
FMobileHelperModule::Get().GetPlatform()->ShowToast(Msg);
#else
GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Red, Msg);
#endif
}
|
cs |
# UPL 구현
docs.unrealengine.com/ko/SharingAndReleasing/Mobile/Android/AndroidConfigRulesSystem/index.html
Plugin 폴더에 'MobileHelper_UPL_Android.xml' UPL xml 파일을 생성합니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
<?xml version="1.0" encoding="utf-8"?>
<root xmlns:android="http://schemas.android.com/apk/res/android">
<gameActivityImportAdditions>
<insert>
import android.widget.Toast;
</insert>
</gameActivityImportAdditions>
<androidManifestUpdates>
<!-- -->
</androidManifestUpdates>
<gameActivityClassAdditions>
<insert>
public void showToast(final String msg)
{
runOnUiThread(new Runnable() {
public void run() {
Toast.makeText(getBaseContext(), msg, Toast.LENGTH_SHORT).show();
}
});
}
</insert>
</gameActivityClassAdditions>
</root>
|
cs |
위의 내용을 복사&붙혀넣기를 합니다.
gameActivityImportAdditions : Toast에 필요한 임포트 할 코드를 넣습니다.
gameActivityClassAdditions : java 구현 코드를 넣습니다.
# BP 에서 호출하기
# Android 에서 테스트
# iOS는?
iOS는 테스트 기기도 없고.. 개발자 프로그램 가입할 돈도 없고..
코드 구현은 비슷해서 추후 구현.
# Github
github.com/siyanbae/UE4_MobileHelper.git
자세한 구현 코드는 해당 github에 있습니다.
# 참고 자료
github.com/AppsFlyerSDK/appsflyer-unreal-plugin
github.com/gameDNAstudio/MobileUtils
qiita.com/shiena/items/fe0e4cc1de4ddbaa60f0
UE4 Adversiting Plugins
'Unreal Engine 4' 카테고리의 다른 글
[Android] AdMob 광고 연동 하기 (배너, 전면 광고, 보상형 광고) (2) | 2021.04.22 |
---|---|
[Spine] UE4 Spine 연동하기 (0) | 2021.04.20 |
[FCM] UE4 Firebase Cloud Messaging 적용하기 (0) | 2021.04.20 |
[Android] Mobile Plugin 만들기 #1 (0) | 2021.04.14 |
[Android ] Android SDK 환경 설정 (0) | 2021.04.14 |