1 开发前准备
1.1 拷贝资源
SDK开发资源包: SDK目录中包含SDK的资源文件,请复制SDK目录中的所有目录与文件,
并拷贝至各自的游戏工程中,如下:
将“单机\sdk\cocos\assets”目录下的文件拷贝到游戏对应目录。
将“单机\sdk\cocos\libs”目录下的文件拷贝到游戏对应目录下,并做如下关联。
将Classes/SFGameNativeInterface.h文件拷贝到游戏工程中C++头文件存放位置,如Cocos2dx项目放入Classes目录。
并且在使用接口文件中,加入include引用:#include "SFGameNativeInterface.h"
1.2 添加SDK提供的Activity引用
将游戏AndroidManifest.xml文件的application中添加由易接提供如下代码,可参考“单机\sdk\ AndroidManifest.xml”
<activity
android:name="com.snowfish.cn.ganga.offline.helper.SFGameSplashActivity"
android:theme="@android:style/Theme.Translucent"
android:screenOrientation="sensor"
android:label="@string/app_name" >
<intent-filter>
<actionandroid:name="android.intent.action.MAIN"/>
<categoryandroid:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
<activity
android:name="com.snowfish.a.a.s.PA"
android:theme="@android:style/Theme.Translucent.NoTitleBar"
android:configChanges="keyboardHidden|orientation"
android:windowSoftInputMode="stateHidden">
</activity>
<service
android:name="com.snowfish.a.a.s.ABGSvc"
android:enabled="true"
android:process="com.snowfish.a.a.bg" >
<intent-filter>
<action android:name="com.snowfish.a.a.s.ABGSvc"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</service>
<meta-data
android:name="com.snowfish.appid"
android:value="KEY">
</meta-data>
<meta-data
android:name="com.snowfish.customer"
android:value="SNOWFISH">
</meta-data>
<meta-data
android:name="com.snowfish.channel"
android:value="SNOWFISH">
</meta-data>
<meta-data
android:name="com.snowfish.sdk.version"
android:value="1">
</meta-data>
标红处的KEY值需要替换成由易接CP后台分配的APPID,格式如下:{12345678-12345678}。
1.3 修改启动Activitiy
在AndroidManifest.xml中的主入口Activity配置为com.snowfish.cn.ganga.offline.helper.SFGameSplashActivity。
游戏原来的主入口Activity请添加到res/values/strings.xml中的sf_class_name字符串中,使得启动完成后即启动游戏
例如:
<string name="sf_class_name">com.yijie.cn.sdk.demo.MainActivity</string>
1.4 添加SDK需要的use-permision
将游戏的AndroidManifest.xml中添加use-permision如下,可参考“单机\sdk\ AndroidManifest.xml”
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.SEND_SMS"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
<uses-permission android:name="android.permission.GET_TASKS" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
1.5 避免模糊,防止计费时发生异常
两种方式建议使用第二种方式:
1) proguard-project.txt 文件中增加如下代码:
-keep class com.snowfish.**{*;}
2) android\sdk\tools\proguard\proguard-android.txt文件中增加:
-keep class com.snowfish.**{*;}
1.6 修改 Application
1) 若无自定义Applicatiion,则修改AndroidManifest.xml的Application如下:
<application android:name="com.snowfish.cn.ganga.offline.helper.SFOfflineApplication"/>
2) 若开发者自定义的Application。则自定义Application需要继承com.snowfish.cn.ganga.offline.helper.SFOfflineApplication,
AndroidManifest.xml修改如下:
<application android:name="自定义Application"/>
1.7 其它修改
1) 将\sdk\cocos\libs\armabi\libs\armabi\libsfunityoffline.so拷贝到游戏项目的libs\armabi目录和jni目录下。
2) 将\sdk\cocos\Classes\SFGameNativeInterface.h文件拷贝到游戏工程中C++头文件存放位置,如Cocos2dx项目放入Classes目录。
在调用C++接口的文件中,加入include引用:#include "SFGameNativeInterface.h"
3) 修改android工程的jni/Android.mk文件,添加libsfunityoffline.so:
include $(CLEAR_VARS)
LOCAL_MODULE := sfunityoffline
LOCAL_SRC_FILES := libsfunityoffline.so
include $(PREBUILT_SHARED_LIBRARY)
并且添加为游戏C++模块的依赖共享库:LOCAL_SHARED_LIBRARIES += sfunityoffline
4) 游戏主Activity中加载库文件,如需添加其他库文件,请将此库文件第一个加载:
static {
System.loadLibrary("sfunityoffline");
}
具体参考demo
2 初始化接口(必选接口)
public static void onInit (Activity activity);
该方法用于系统全局初始化,在游戏主Activity的onCreate中调用,必须初始化否则无法进行计费,调用用例:
SFCommonSDKInterface.onInit(this);
3 初始化C++接口(必选接口)
public static void init(Activity activity, SFActionCallback callback)
调用用例:
SFNativeAdapter.init(AppActivity.this, new SFActionCallback() {
@Override
public void callback(Runnable run) {
runOnGLThread(run);
}
});
在游戏主Activity的onCreate中调用。
4 在游戏启动后,判断用户是否开启音效接口(必选接口)
static bool SFGameNativeInterface::isMusicEnabled();
返回值: false 关闭, true 开启标识用户是否选择开启音效
游戏开发者需要根据该返回值,设定游戏背景音乐是否开启。
5 在游戏需要弹出计费界面的场景调用计费接口(必选接口)
static void SFGameNativeInterface:: pay(constchar* id);
参数: id:计费点索引
6 退出回调类
class SFNativeGameExitCallBack {
public:
SFNativeGameExitCallBack() {};
virtual ~SFNativeGameExitCallBack() {};
//如果b为TRUE,代表游戏退出
virtual void onGameExit(bool b) = 0;
};
7 支付回调处理类
class SFNativeIPayResulBack {
public:
SFNativeIPayResulBack() {};
virtual ~SFNativeIPayResulBack() {};
//取消支付
virtual void onCanceled(const char* remain) = 0;
//支付失败
virtual void onFailed(const char* remain) = 0;
//支付成功
virtual void onSuccess(const char* remain) = 0;
};
8 更多游戏接口
static void SFGameNativeInterface:: viewMoreGames ();
调用该接口查看更多游戏
9 游戏退出接口(必选接口)
static void SFGameNativeInterface::exit();
调用示例:
SFGameNativeInterface::setSFGameExitCallBack(&exitCallback);
SFGameNativeInterface:: exit();
操作步骤:
1) 联系易接商务和运营人员确认合作关系,并提交给运营人员游戏计费点信息。
2) 等待运营人员审核通过。
3) 审核通过后,游戏开发人员接入易接SDK。
4) 使用易接客户端工具,打入雪鲤鱼支付SDK,完成后提交给易接测试。