Android
Quick Start
下载最新版本
运行示例项目
在Android Studio运行Naver游戏SDK示例项目的方法如下所示:
在Android Studio打开sample/navergame-sdk-sample-android-studio文件夹内的项目。
构建项目。
确认在应用程序可正常运行SDK。
NaverGame SDK环境设置
1. 应用程序清单设置
如下所示,对AndroidManifest.xml文件添加访问权限和活动。
1.1 NaverGame SDK访问权限
添加NaverGame SDK所需访问权限。
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
2. Gradle设置
对使用SDK的module单位的build.gradle进行设置。
2.1 PlugIn 设置
NaverGameSdk使用kotlin。
如下所示,对plugins声明区段进行Kotlin插件声明。
plugins {
id 'com.android.application'
id 'kotlin-android'
}
2.2 添加库
在项目文件夹创建libs文件夹后,粘贴下载的navergame-sdk-gradle-XXX.aar文件。
Android Studio用aar库是为防止dependency冲突,利用gradle管理外部库的版本。
libs文件夹结构视gradle版本和项目设置可能有所不同,但基本上设置在与src文件夹同一位置即可。
2.3 Dependency设置
添加NaverGameSdk使用的库。
如下所示,对Dependency声明区段添加库。
glide库和retrofit库不支持不同版本间的兼容,因此请保留NaverGameSDK的版本名称。
与glide、retrofit库使用的其他库发生冲突时,可用库分离项目,保持dependency。
dependencies {
implementation file('libs/navergame-sdk-gradle-x.x.x.aar') // NaverGameSDK
implementation "org.jetbrains.kotlin:kotlin-stdlib:1.3.72" // Kotlin
implementation "androidx.viewpager2:viewpager2:1.0.0"
implementation "androidx.swiperefreshlayout:swiperefreshlayout:1.1.0"
implementation "com.github.bumptech.glide:glide:3.7.0" // Glide
implementation "com.squareup.retrofit2:retrofit:2.6.4" // Retrofit, Gson
implementation "com.squareup.retrofit2:converter-gson:2.6.4" // Retrofit, Gson
}
3. ProGuard 设置
使用NaverGame SDK时,如果将minifyEnabled设置为true,那么应添加除ProGuard以外的选项。
打开proguard-rules.pro文件,输入如下内容:
ProGuard声明重复也不会导致问题,因此建议直接粘贴。
相应文件还可在NaverGameSDK Github下载。
#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
4. 初始化
根据NaverGame SDK支持的语言,如下所示,对NaverGame SDK进行初始化。
4.1 NaverGame SDK初始化
NaverGame SDK初始化时,设置如下初始化选项,调用init() method。 init() method是PLUG SDK初始化方法。
ClientId:在NAVER账号登录开发者中心登记、获取应用程序的客户账号ClientId
ClientSecret:在NAVER账号登录开发者中心登记、获取应用程序的客户密钥
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 );
...
}
5. NaverGame SDK开始
完成初始化后,运行NaverGame SDK。
5.1 startHome() method
startHome() method是开始主页横幅的方法。
/**
* 홈배너 실
*/
NNGLink.startHome(activity)
使用NaverGameSDK
initModule() method
初始化SDK。
public static void initModule
(Activity activity, String loungeId, String clientId, String secret);
下面是具体运行initModule() method的示例。
final String loungeId = "naver_game_4developer"";
final String clientId = "UKvNABLDsyEJusJGsXL2";
final String clientSecret = "rK4suc_Qd0";
NNGLink.initModule(this, loungeId, clientId, clientSecret );
finishSdk() method
finishSdk() method是终止NaverGameSDK的方法。在特定情况应终止SDK时调用。例如,运行通过回调GLinkDelegate传达的游戏内菜单代码时,应调用finishSdk() method关闭SDK。
public static void finishSdk();
startHome() method
运行主页横幅。
public static void startHome(Activity activity);
下面是具体运行startHome() method的示例。
/**
* 홈 배너 시작
*/
NNGlink.startHome(activity)
startSorry() method
单独弹出维护用或通用通知事项。
public static void startSorry(final Activity activity);
下面是具体运行startSorry() method的示例。
/**
* 점검용 배너 시작
*/
NNGLink.startSorry(activity)
startBoard(int boardId) method
直接运行在官方大厅管理页 > SDK管理 > 公告栏管理页登记的特定公告栏的方法。
public static void startBoard(final Activity activity, int boardId);
下面是具体运行executeBoard() method的示例。
NNGLink.startBoard(activity,1)
startFeed(long feedId, bool isTempFeedId) method
通过登记留言的编号直接运行的方法。如果是通过预约显示登记的预约留言,应在FeedId输入预留言的编号,并将IsTempFeedId输入为True。 在预留言发布前,即使运行method也不会显示留言。
FeedId:留言或预留言的编号
IsTempFeedId:FeedId是留言时,显示false;FeedId是预留言时,显示true
public static void startFeed(final Activity activity, long feedId, boolean isTempFeedId);
下面是具体运行executeFeed() method的示例。
NNGLink.startFeed(activity,50154,false)
getCountryCode()method
获取安卓设备的countryCode。
public static String getCountryCode(Activity activity);
countryCode是由2个字母构成的国家代码(ISO 3166-1 alpha-2)。利用这一代码可在代码内按国家进行分支处理。主要国家代码如下所示,其他国家代码请参考链接。
国家代码
国家
CN
中国
JP
日本
KR
韩国
TH
泰国
US
美国
下面是使用getCountryCode() method,仅在韩国初始化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()method
发生在运行NaverGameSdk时。
onSdkDidLoaded()method
发生在终止NaverGameSdk时。
onCallInGameMenuCode()method
发生在NaverGameSdk运行游戏内菜单代码时。在官方大厅管理页 > SDK管理 > 横幅管理页对横幅登记“游戏内菜单”时使用。视Android和iOS平台分别传达不同登记值,因此如果输入不同值,应分别进行处理。
横屏模式,竖屏模式
Naver游戏SDK支持横屏模式和竖屏模式。 Android环境下无需特别设置,可自动随屏幕的横向或竖向状态切换横屏模式或竖屏模式。
Last updated
Was this helpful?