帮助文档

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.xmlApplication如下:

<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);

该方法用于系统全局初始化,在游戏主ActivityonCreate中调用,必须初始化否则无法进行计费,调用用例:

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);

    }

});

在游戏主ActivityonCreate中调用。

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,完成后提交给易接测试。