dependencies 에 아래와같이 okhttp 강제 의존성을 추가하고, glide 버전을 4.10.0 으로 변경합니다.
implementation ("com.squareup.okhttp3:okhttp:3.12.12"){
force = true //API 19 support
}
implementation 'com.squareup.okhttp3:logging-interceptor:3.12.12'
implementation "com.github.bumptech.glide:glide:4.10.0"
3-2 Glide 4.x 용 NaverGameSdk 라이브러리 교체
4. ProGuard 설정
NaverGame SDK 를 사용할때 minifyEnabled 를 true 로 설정한다면 프로가드를 제외하는 옵션을 추가해야 합니다.
proguard-rules.pro 파일을 열어 아래 내용을 입력합니다.
프로가드 선언은 중복되어도 문제가 없으므로 단순히 붙여넣기 하시는 것이 좋습니다.
#retrofit 2
# Retrofit does reflection on generic parameters. InnerClasses is required to use Signature and
# EnclosingMethod is required to use InnerClasses.
-keepattributes Signature, InnerClasses, EnclosingMethod
# Retrofit does reflection on method and parameter annotations.
-keepattributes RuntimeVisibleAnnotations, RuntimeVisibleParameterAnnotations
# Retain service method parameters when optimizing.
-keepclassmembers,allowshrinking,allowobfuscation interface * {
@retrofit2.http.* <methods>;
}
# Ignore annotation used for build tooling.
-dontwarn org.codehaus.mojo.animal_sniffer.IgnoreJRERequirement
# Ignore JSR 305 annotations for embedding nullability information.
-dontwarn javax.annotation.**
# Guarded by a NoClassDefFoundError try/catch and only used when on the classpath.
-dontwarn kotlin.Unit
# Top-level functions that can only be used by Kotlin.
-dontwarn retrofit2.KotlinExtensions
#end of retrofit2
#gson
##---------------Begin: proguard configuration for Gson ----------
# Gson uses generic type information stored in a class file when working with fields. Proguard
# removes such information by default, so configure it to keep all of it.
-keepattributes Signature
# For using GSON @Expose annotation
-keepattributes *Annotation*
# Gson specific classes
-dontwarn sun.misc.**
#-keep class com.google.gson.stream.** { *; }
# Prevent proguard from stripping interface information from TypeAdapterFactory,
# JsonSerializer, JsonDeserializer instances (so they can be used in @JsonAdapter)
-keep class * implements com.google.gson.TypeAdapterFactory
-keep class * implements com.google.gson.JsonSerializer
-keep class * implements com.google.gson.JsonDeserializer
##---------------End: proguard configuration for Gson ----------
#end of gson
#glide
-keep public class * implements com.bumptech.glide.module.GlideModule
-keep public class * extends com.bumptech.glide.module.AppGlideModule
-keep public enum com.bumptech.glide.load.ImageHeaderParser$** {
**[] $VALUES;
public *;
}
#end of glide
#kotlin
-keep class kotlin.** { *; }
-keep class kotlin.Metadata { *; }
-dontwarn kotlin.**
-keepclassmembers class **$WhenMappings {
<fields>;
}
-keepclassmembers class kotlin.Metadata {
public <fields>;
public <methods>;
}
#End of kotlin
#navergame sdk
# Application classes that will be serialized/deserialized over Gson
-keep class com.navercorp.nng.android.sdk.api.service** { *; }
-keep class com.navercorp.nng.android.sdk.api.entity.** { *; }
-keep class com.navercorp.nng.android.sdk.NNGLink** { *; }
-keep class com.navercorp.nng.android.sdk.NNGLink$Companion { *; }
-keepclassmembers class com.navercorp.nng.android.sdk.NNGLink {
public static ** Companion;
}
-keep class com.navercorp.nng.android.sdk.NNGConfig** { *; }
#end of sdk
5. 초기화
NaverGame SDK가 지원하는 언어에 따라 다음과 같이 NaverGame SDK를 초기화합니다.
5.1 NaverGame SDK 초기화
네이버게임 SDK를 초기화할 때는 다음과 같은 초기화 옵션을 설정하고 init() 메서드를 호출합니다.
init() 메서드는 PLUG SDK를 초기화하는 메서드입니다.
LoungeId: 공식라운지를 신청하고 받은 LoungeId
public class MainActivity extends Activity {
@Override protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
/**
* 네이버 아이디로 로그인 개발자 센터에서 받은 정보로 SDK를 초기화한다.
* Glink 클래스의 다른 메서드를 호출하기 전에 반드시 초기화를 먼저 해야 한다.
* 개발자 센터 주소: https://nid.naver.com/devcenter/main.nhn
*/
final String loungeId = "naver_game_4developer"";
final String clientId = "197CymaStozo7X5r2qR5";
final String clientSecret = "evCgKH1kJL";
NNGLink.initModule(this, loungeId, clientId, clientSecret );
...
}
final String loungeId = "naver_game_4developer"";
final String clientId = "UKvNABLDsyEJusJGsXL2";
final String clientSecret = "rK4suc_Qd0";
NNGLink.initModule(this, loungeId, clientId, clientSecret );
finishSdk() 메서드
finishSdk() 메서드는 NaverGameSDK 를 종료시키는 메서드입니다. 특정 상황에서 sdk 를 종료시켜야 할때 호출합니다. 예를들어 GLinkDelegate 콜백을 통해서 전달되는 인게임메뉴코드 를 실행할때에는 반드시 finishSdk() 메서드를 호출하여 sdk를 닫아주어야 합니다.
public static void finishSdk();
startHome() 메서드
홈배너를 실행합니다.
public static void startHome(Activity activity);
다음은 startHome() 메서드를 구현한 예입니다.
/**
* 홈 배너 시작
*/
NNGlink.startHome(activity)
startSorry() 메서드
점검용 또는 공통 공지사항을 단독으로 띄웁니다.
public static void startSorry(final Activity activity);
다음은 startSorry() 메서드를 구현한 예입니다.
/**
* 점검용 배너 시작
*/
NNGLink.startSorry(activity)
startBoard(int boardId) 메서드
특정 게시판을 바로 실행하는 메서드 입니다. BoardId 는 웹에서 게시판 접속 시 보이는 https://game.naver.com/lounge/{loungeId}/board/{boardId} 형태의 URL에서 알 수 있습니다.
public static void startBoard(final Activity activity, int boardId);
다음은 executeBoard() 메서드를 구현한 예입니다.
NNGLink.startBoard(activity,1)
startFeed(long feedId, bool isTempFeedId) 메서드
등록된 글의 번호로 바로 실행하는 메서드 입니다. 만약 예약노출을 통해서 등록한 예약 게시글의 경우에는 예약글의 번호를 FeedId 에 입력하고 IsTempFeedId 를 True 로 입력해야 합니다.
예약글이 게시되기 전에는 메서드를 실행하더라도 글이 노출되지 않습니다.
FeedId: 게시글 또는 예약게시글의 번호
IsTempFeedId: FeedId 가 게시글 인 경우 false, FeedId가 예약게시글 인 경우 true
public static void startFeed(final Activity activity, long feedId, boolean isTempFeedId);
유저가 스크린샷을 캡쳐했을때 이를 감지하여 글쓰기로 연결하는 버튼을 띄우는 것을 설정하는 메서드 입니다. 미호출시 기본값은 ON(true) 입니다.
enabled: true 이면 스크린샷을 캡쳐했을때 글쓰기 버튼을 띄웁니다.
public static voids enableScreenShotDetector(boolean enable);
다음은 enableScreenShotDetector() 메서드를 구현한 예입니다.
NNGLink.enableScreenShotDetector(true)
putGameId(string gameId) 메서드
네이버로그인과 연동되어 해당유저와 네이버아이디를 매칭시킵니다. 글쓰기와 댓글쓰기등을 통한 이벤트참여시 당첨된 유저의 게임아이디를 확인할 수 있습니다.
init함수가 호출된 이후에 가능한 시점에 호출해주시면 됩니다.
gameId: 식별가능한 게임아이디를 입력합니다. 네이버아이디 당 하나만 저장됩니다.
public static voids putGameId(String gameId);
다음은 enableScreenShotDetector() 메서드를 구현한 예입니다.
NNGLink.putGameId("naver_game_id_for_test")
getCountryCode() 메서드
안드로이드 기기의 countryCode를 얻어옵니다.
public static String getCountryCode(Activity activity);
국가코드
국가
CN
중국
JP
일본
KR
대한민국
TH
태국
US
미국
다음은 getCountryCode() 메서드를 사용하여 대한민국의 경우에만 SDK 를 초기화 하고 배너를 호출하는 예입니다.
if (NNGLink.getCountryCode(getActivity()).equals("KR")) {
NNGLink.initModule(getActivity() ,LOUNGE_ID, CLIEND_ID, CLIENT_SECRET);
NNGLink.startHome(getActivity());
}
NNGCallbackListener 콜백 리스너
Sdk 내부에서 특정 이벤트가 발생했을때 콜백 리스너를 통해 전달합니다.
등록방식은 다음과 같습니다.
NNGLink.setSdkLoadListener(new NNGCallbackListener() {
@Override
public void onSdkDidLoaded() {
nngSdkLoaded();
}
@Override
public void onSdkDidUnloaded() {
nngSdkUnLoaded();
}
@Override
public void onCallInGameMenuCode(@NotNull String moveTo) {
nngSdkCallInGameMenuCode(moveTo);
}
});
onSdkDidLoaded() 메서드
NaverGameSdk 가 실행 되었을 때 발생합니다.
onSdkDidLoaded() 메서드
NaverGameSdk 가 종료 되었을 때 발생합니다.
onCallInGameMenuCode() 메서드
NaverGameSdk 에서 인게임메뉴코드 를 실행해야 할 때 발생합니다. 공식 라운지 관리페이지 > SDK 관리> 배너관리 페이지에서 배너에 '인게임 메뉴' 를 등록했을때 사용합니다. Android 와 iOS 각각의 플랫폼에 따라 등록한 값이 각자 전달되므로 다른 값을 입력했다면 각차 처리해 주셔야 합니다.
가로 모드, 세로 모드
Naver Game SDK는 가로 모드와 세로 모드를 모두 지원합니다.
Android 환경에서는 별도로 설정하지 않아도 화면의 가로, 세로 상태에 따라 가로 모드, 세로 모드가 자동으로 적용됩니다.
에서 최신 라이브러리 파일을 다운로드 받습니다.
안드로이드 라이브러리는 minSdkVersion 19버전부터 지원하지만 OkHttp 3.14.7 버전의 로 인해
21버전 이상을 사용해야 하며, 그렇지 않을 경우 크래시가 발생 합니다. 부득이 하게 19 버전을 지원해야 할 때는 아래와 같이 별도의 설정을 추가해야 합니다.
Glide 4.x 버전을 지원하기 위해서는 별도의 네이버게임 라이브러리(navergame-sdk-gradle-with-adapter-x.x.x.aar)를 사용해야하고 GlideAdapterV4 라이브러리를 추가해야합니다. 에서 다운받으실 수 있습니다.
해당 파일은 NaverGameSDK Github 에서도 할 수 있습니다.
ClientId: 에 애플리케이션을 등록하고 받은 클라이언트 아이디 ClientId
ClientSecret: 에 애플리케이션을 등록하고 받은 클라이언트 시크릿
countryCode는 두 개의 알파벳으로 이루어진 국가코드()입니다. 이를활용하면 코드 내에서 국가별 분기처리가 가능합니다.주요 국가코드는 다음과 같으며이외의 국가 코드는 를 참고하십시오.