Skip to content

Android アクセスガイド

アクセス手順

  • Android SDK デモ ダウンロード
  • (Android11システムに適合させる必要があります。そうでない場合、チャネルへの掲載に影響を与えます。)
  • Android StudioプロジェクトパッケージをエクスポートするにはUnityを使用することをお勧めします。
  • ゲーム初回導入時には、Androidスマートフォンのフルスクリーン最適化が必要です (一般的な対応方法としては、デフォルトでフルスクリーン表示とし、画面上部のノッチやカメラ部分がゲームUIや機能に影響を与えないようにする必要があります。適切に対応されていない場合、クラウドテスト時の評価に影響する可能性があります)
  • SDKを呼び出すすべてのインターフェースは、 () で行う必要があります。
  • UnityでJavaインターフェースを呼び出す場合は、UIスレッドに切り替えてからSDKインターフェースを呼び出す必要があることにご注意ください。
  • 必ず本アクセスガイドを詳細にお読みください。アクセスについてご質問がある場合は、グループチャットで技術スタッフに直接お問い合わせください。
  • 本アクセスガイドは随時更新される可能性があります。インターフェースに変更があった場合、グループチャット内で共有します。詳しいアップデートについては、FastSdk アップデート ログ を確認してください。

Maven リポジトリの設定

project:build.gradle

xml
buildscript {
    repositories {
        maven {
            url 'https://sdk.wdyxgames.com/nexus/repository/sdk-public/'
        }
    }
}

allprojects {
    repositories {
        maven {
            url 'https://sdk.wdyxgames.com/nexus/repository/sdk-public/'
        }
    }
}

app:build.gradle

xml
dependencies {
    implementation 'com.hoolai.access.open:hoolai-core:1.0.3.26'
}

app: AndroidManifest.xml の特別な処理

::: 注意 パッケージツール使用時にはAPK内のパッケージ名が動的に置換されます。以下のルールに従ってAndroidManifest.xmlの設定を修正・置換してください。対応しない場合、同一デバイスへの複数チャネル版のインストールが不可能になったり、異常終了(クラッシュ)が発生したりする可能性があります。 () :::

xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    package="com.hoolai.access.channel.impl">

    <!-- 例 -->
    <uses-permission android:name="android.permission.INTERNET" />
    
    <!-- アプリケーションには以下の3つの新規設定がある場合,必ず(ゲームがカスタムApplicationを定義していない場合、android:nameにHLApplicationの設定が必要です)を追加してください-->
    <application
        android:name="com.hoolai.access.open.fastaccess.HLApplication"
        android:allowBackup="false"
        android:extractNativeLibs="true"
        android:requestLegacyExternalStorage="true"
        android:usesCleartextTraffic="true">
     
        <meta-data 
            android:name="android.max_aspect" 
            android:value="2.5"
            android:allowBackup="false"
            android:requestLegacyExternalStorage="true"/>
        <activity
            android:name="ゲームのメインActivity"
            android:configChanges="screenLayout|orientation|keyboardHidden|keyboard|fontScale|layoutDirection|density|smallestScreenSize|screenSize|uiMode|navigation|touchscreen|locale|mnc|mcc"
            android:launchMode="standard">
            ...
            <!-- 以下の内容をゲームのランチャークラスにcopyしてください,必ず接続する必要があります -->
            <intent-filter>
                <action android:name="android.intent.action.VIEW" />
                <category android:name="android.intent.category.BROWSABLE" />
                <category android:name="android.intent.category.DEFAULT" />
                <data android:scheme="hlscheme" android:host="hlhost"/>
            </intent-filter>
            <!-- シェア設定(オプション) -->
            <intent-filter>
                <action android:name="android.intent.action.VIEW" />
                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.BROWSABLE" />
                <!--gameパラメータはカスタマイズ可能(リクエストパラメータと一致させること)-->
                <data android:scheme="game" />
            </intent-filter>
            
        </activity>

       <!-- MAIN_ACTIVITYタグのvalue=ゲームのエントリーポイントとなるActivityの完全修飾パス(未設定の場合、応用宝チャネルでログイン失敗が発生) -->
       <!-- このタグは必須 -->
        <meta-data
            android:name="MAIN_ACTIVITY"
            android:value="ゲームのメインActivity,如com.demo.GameActivity"/>
      
        <!-- 注意!!!! ${applicationId}はhlApplicationIdに置換すること --> 
        <!-- 以下は例です copyする必要なし -->
        <!-- TODO 元の設 -->
        <provider
            android:name="xx.FileProvider"
            android:authorities="${applicationId}.Fileprovider"
            ... /> 
        <!-- TODO 修正後 -->
        <provider
            android:name="xx.FileProvider"
            android:authorities="hlApplicationId.Fileprovider"
            ... /> 
        <!-- 以下は例です copyする必要なし -->
    </application>

</manifest>

WARNING

サードパーティの SDK を統合している場合、AndroidManifest ファイル内の ${applicationId} を含む構成は、現在の APK パッケージのパッケージ名に自動的に置き換えられるため、チャネル パッケージがリリースされたときに置き換えられなくなります。 R&D 担当者は、パッケージのリリース後にチェックする必要があります。

セルフチェックプロセス

  1. Android Studio で apk パッケージを開き、AndroidManifest.xml ファイル内のパッケージ タグを見つけます。タグに対応する値は、apk のパッケージ名です。

  2. このファイルでパッケージ名を検索し、このパッケージ名を含むすべての構成 (package="package name" 構成を除く) をプロジェクトの AndroidManifest ファイルにコピーし、すべてを hlApplicationId に置き換えて、再パッケージ化します。

  3. ゲーム アクティビティの起動モードが必ず android:launchMode="standard" に設定してください。

インターフェース仕様書

Applicationアクセス()、この構成は AndroidManifest.xml で宣言する必要があることに注意してください。

  • 方法1: ゲームにカスタムアプリケーションがない場合にHLApplicationを使用する
  • 方法2: ゲームにカスタムアプリケーションがあり、HLApplication.classを継承している場合は処理は必要ありません。
  • 方法3: ゲームにカスタムアプリケーションがあり、HLApplication.classを継承していない場合は、次の呼び出しを行う必要があります。
  • 上記 3 つの設定を完了したら、AndroidManifest.xml に <application android:name="xxxx.xxxx.XXXApplication" が設定されているかどうかを確認してください。ここで設定する必要があります。
java
public class YourApplication extends YourBaseApplication {

    @Override
    public void onCreate() {
        super.onCreate();
        FastSdk.onApplicationCreate(this);
    }

    @Override
    public void onTerminate() {
        super.onTerminate();
        FastSdk.onTerminate(this);
    }

    @Override
    public void onConfigurationChanged(Configuration newConfig) {
        super.onConfigurationChanged(newConfig);
        FastSdk.onConfigurationChanged(this, newConfig);
    }

    @Override
    protected void attachBaseContext(Context context) {
        super.attachBaseContext(context);
        FastSdk.attachBaseContext(this, context);
    }
}

SDK 機能アクセス

初期化 ()

WARNING

  • SDK の初期化中に、ゲーム内の黒画面の問題を解決するための提案: 「unity_static_splash」という画像を準備し、それを res/drawable ディレクトリにコピーします。
  • このインターフェースは、ゲームの開始後に最初に呼び出されます。初期化が成功した後のみ、熱更新/バージョン検出/ゲームの初期化/ログインなどの機能を呼び出すことができます。
  • 初期化コールバック未受信時、またはonInitFailed時は、後続の機能呼び出しを行うことができません。
  • 初期化に失敗した場合は、ユーザーにゲームの再初期化または再起動を案内することをお勧めします。
java
//ゲーム起動クラス(非スプラッシュ画面)のonCreate内で実施
//SDK初期化コールバック
FastSdk.hlSystemListener = new HLSystemListener() {
    @Override
    public void onInitSuccess(InitResult initResult) {
        //初期化成功,コールバックInitResult:gameId,channelId,channel
        //gameId プロダクトid,ログイン認証時に必要な値
        //channelId プロダクトの異なるチャネルのID値
        //channel チャネル値(例: xiaomi, huaweiなど)
    }

    @Override
    public void onInitFailed(String reason) {
       //ダイアログ表示を推奨。再起動ボタンやアプリ終了ボタンを追加可能
    }

    @Override
    public void onCustomExit() {
        //ゲームカスタム終了画面。終了ロジックを実装しないとチャネル審査に通らない場合あり
        //デモは例示のみ。そのままコピーしないでください
        new AlertDialog.Builder(GameActivity.this)
                .setTitle("ゲーム終了ダイアログ")
                .setMessage("私はゲームのダイアログ画面です")
                .setNegativeButton("キャンセル", null)
                .setPositiveButton("確認", (dialog, which) -> onExitSuccess(s))
                .setCancelable(false).show();
    }

    @Override
    public void onExitSuccess(String result) {
        //ゲームは以下のコードロジックに従って終了することを推奨、互換性が最も良い
        //そうしないとOPPO、vivoなどのチャネルで終了が不完全になり、再度起動時に黒画面が発生する可能性あり
        moveTaskToBack(true);
        finish();
        Intent intent = new Intent(Intent.ACTION_MAIN);
        intent.addCategory(Intent.CATEGORY_HOME);
        intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
        startActivity(intent);
        android.os.Process.killProcess(android.os.Process.myPid());
    }

    @Override
    public void onUpdate(String data) {
        //バージョンアップ(インターフェース予備する)
    }
};
//SDKアカウントコールバック
FastSdk.hlAccountListener = new HLAccountListener() {
    @Override
    public void onRefreshUser(LoginResult result) {
         //サブアカウント切り替え。このコールバックではユーザー合法性検証のみ必要。サブアカウントなしの場合は無視可
         //ゲーム内でプレイヤー情報切り替えをサポートしていない場合、ゲームは一度ログアウト後、再ログインが必要(再初期化不要)
    }

    @Override
    public void onLoginSuccess(LoginResult result) {
        //ログイン成功
    }

    @Override
    public void onLoginFailed(String reason) {
        //ログイン失敗
    }

    @Override
    public void onLogout(Object... var1) {
       //ログアウト
    }
};
//SDK支払いコールバック
FastSdk.hlPaymentListener = new HLPaymentListener() {
    @Override
    public void onPaySuccess(String result) {
        //支払い成功。コールバック状態がOKであることを示すのみ。実際の発送はサーバー通知を基準とする
        //resultが空文字列の場合あり、要注意
    }

    @Override
    public void onPayFailed(String reason) {
        //支払い失敗。reasonが空文字列の場合あり
    }
    
    
    @Override
    public void onQuerySuccess(List<GoodsInfo> list) {
        //海外ゲーム用。商品リスト取得して表示に使用
    }
};
//SDKコールバック共有(注意:一部のサードパーティ共有はコールバックを受け取れない場合があります。例:WeChat共有)
FastSdk.hlShareListener = new HLShareListener() {
    @Override
    public void onShareSuccess() {
        //共有成功
    }

    @Override
    public void onShareFailed(String reason) {
        //共有失敗
    }
};


//注意:onCreateを呼び出す前に、上記で使用するインターフェースをインスタンス化する必要があります
FastSdk.onCreate(this);

InitResult

パラメータ名タイプ説明
gameIdintプロダクトID
channelStringチャネル名
channelIdintチャネルID

LoginResult

パラメータ名タイプ説明
uidlongユーザーID
accessTokenStringトークン
nickNameStringニックネーム
channelUidStringチャネルユーザーID
channelStringチャネル名
serverAreaString拡張パラメータ

GoodsInfo

パラメータ名タイプ説明
itemIdString商品ID
itemNameString商品名
itemCountString商品数
itemPriceString商品金額
showTagString中国本土では無視可能
currencyString通貨タイプ

ログイン()

WARNING

  • このメソッドを呼び出す際は、"game_init_result"イベント送信が完了していることを確認してください。詳細は[ゲームカスタムレポート]を参照
  • 初期化コールバックが未受信または初期化失敗時はログインインターフェースを呼び出さないでください
java
FastSdk.login();

データレポート()

(支払い前に基本データレポートが必要)

  • レポートイベントタイプ(EventType)は4種類:キャラ作成、サーバー入室、レベルアップ、カスタム
  • キャラ作成、サーバー入室、レベルアップイベントレポート時、roleId、roleName、serverId、serverNameパラメータは必須で空不可、支払い機能に影響します!!その他必須データはこちら
java
//eventType範囲:
//キャラ作成:EventType.CreateRole
//サーバー入室:EventType.EnterServer
//レベルアップ: EventType.LevelUp
//上記3種は必ずレポートする、以下は運営要請に応じたカスタムイベントレポート
//カスタムポイント:EventType.CustomerEvent
//カスタムポイント設定時はsetExtendAction("xx"),setPhylum("xx")等の設定必須

PlayerInfo playerInfo = new PlayerInfo();
playerInfo.setRoleId("32424");//キャラクター固有ID,必須
playerInfo.setRoleName("ニックネーム");//必須,String
playerInfo.setRoleLevel("6");//必須,文字列は数字である必要あり、"123"等
playerInfo.setZoneId("1");//必須,ない場合はデフォルト値"1"、文字列内は数字であること
playerInfo.setZoneName("華東サーバー");//必須,ない場合はデフォルト値、"1区"等
playerInfo.setServerId("1");//必須,い場合はデフォルト値"1"、文字列内は数字であること
playerInfo.setServerName("区名称");//必須,ない場合はデフォルト値、"1区"等
playerInfo.setBalance("66");//必須,取得不能時""
playerInfo.setVip("5");//必須
playerInfo.setPartyname("帮派名称");//任意

//追加内容: extraはデータ必須、クライアントデータレポート特殊データレポート参照
//拡張情報,形式:key:value,key:value
playerInfo.setExtra("a:arm,b:bom,gameResourceUrl:xxx,gameLoginServerUrl:xxx");
playerInfo.setClassField("");//ベント結果、空可
//playerInfo.setPhylum("");//拡張データレポート時は提供されたイベントIDを記入、例:1
//playerInfo.setExtendAction("ポイント名"); //基本ポイントは不要、カスタムポイントは必要
FastSdk.report(EventType.EnterServer, PlayerInfo playerInfo);

DANGER

  • CLSネットワーク検出機能を導入する場合の注意!!詳細ルールはこちら
  • この機能はSDK初期化後できるだけ早くレポート,単独でも他のポイントと一緒でも可能
  • 検出アドレスはドメインまたはIP可
  • 検出アドレスのコロンは@で置換、フォーマットエラー防止
  • 検出アドレスのkeyは以下3フィールド必須:gameResourceUrl,gameLoginServerUrl,gameServerUrl

如:playerInfo.setExtra("key:value,gameResourceUrl:http@xxx/open/init, gameServerUrl:tcp@111.222.333.6@8888");

EventType

パラメータ名説明必須か
EventType.CreateRoleキャラクター作成はい
EventType.EnterServerゲームサーバー入室はい
EventType.LevelUpキャラクターレベルアップはい
EventType.CustomerEventカスタムはい

PlayerInfo

パラメータ名タイプ説明必須か
roleIdStringキャラクターidはい
roleNameStringキャラクター名はい
roleLevelStringレベルはい
zoneIdStringエリアID、エリアなし時はserverId値はい
zoneNameStringエリア名、エリアなし時はserverName値はい
serverIdStringサーバーIDはい
serverNameStringサーバー名はい
balanceString残高はい
vipStringVIPレベルはい
partyNameStringギルド名いいえ
appVersionStringアプリバージョンはい
appResVersionStringゲームリソースバージョンはい
extendActionStringイベント名はい
roleCreateTimeStringキャラクター作成時間はい
phylumStringイベントID,「クライアントデータレポート」ドキュメント参照はい
classFieldStringイベント結果,ok/failいいえ
extraString拡張情報(注意:clsレポートで使用)いいえ

ログアウト

java
FastSdk.logout();

支払い(),サーバー入室またはキャラ作成レポート後に呼び出し、そうでないと支払いが開始されない

java
PayParams payParams = new PayParams();
payParams.setItemId("item60");//商品ID,任意
payParams.setItemName("60钻石");//商品名,任意
payParams.setAmount(100);//商品金額,必須,単位:分
payParams.setNotifyUrl("");//支払いコールバックURL
//拡張情報、コールバック時にそのまま返却、各チャネルコールバックパラメータ制限が異なるため。
//コールバックパラメータは現在255文字まで。callBackInfoでは「|」、「=」、「+」、「/」記号を使用しないでください。
payParams.setCallbackInfo("支払い拡張情報,ゲーム透過パラメータ");
payParams.setCurrency("CNY");//中国本土では不要またはCNY
FastSdk.pay(payParams);

:ディバウンス処理における意見

  • SDKはディバウンス処理済み、3秒内に最初の支払いのみ有効。
  • 購入イベント発生時にクライアント側でオーバーレイ表示を推奨、プレイヤーの連続クリック防止。支払いコールバック受信後オーバーレイ解除、コールバック未受信時はタイムアウト設定後自動解除。
  • 支払いデータのキャッシュと支払い完了後のCheckは不要。異なる価格帯を高速クリックすると、実際には最初の支払いだが2番目をキャッシュする可能性があり、支払い成功だがCheck不合格となる。支払い成功ポップアップはSDKコールバックを基準とする。

PayParams

パラメータ名タイプ説明必須か
itemIdString商品IDはい
itemNameString商品名はい
amountint金額,単位:分はい
countint数量,デフォルト1はい
callbackInfoString透過フィールドいいえ
notifyUrlString支払いコールバックURLいいえ
currencyString通貨タイプ,デフォルト:CNYはい
optMap<String, String>拡張パラメータいいえ

プログラム終了

java
FastSdk.exit();

商品リスト情報取得

java
//注意:中国本土ゲームではこのメソッドは不要
FastSdk.queryGoodsInfo();

ライフサイクルメソッド()

java
@Override
protected void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState);
    FastSdk.onSaveInstanceState(outState);
}

@Override
protected void onStart() {
    super.onStart();
    FastSdk.onStart(this);
}

@Override
protected void onResume() {
    super.onResume();
    FastSdk.onResume(this);
}

@Override
protected void onStop() {
    super.onStop();
    FastSdk.onStop(this);
}

@Override
protected void onPause() {
    super.onPause();
    FastSdk.onPause(this);
}

@Override
protected void onRestart() {
    super.onRestart();
    FastSdk.onRestart(this);
}

@Override
protected void onDestroy() {
    super.onDestroy();
    FastSdk.onDestroy(this);
}

@Override
protected void onNewIntent(Intent intent) {
    super.onNewIntent(intent);
    FastSdk.onNewIntent(intent);
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    FastSdk.onActivityResult(this, requestCode, resultCode, data);
}

@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
    super.onRequestPermissionsResult(requestCode, permissions, grantResults);
    FastSdk.onRequestPermissionsResult(requestCode, permissions, grantResults);
}

@Override
public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig);
    FastSdk.onConfigurationChanged(this, newConfig, getResources());
}

@Override
public void onBackPressed() {
    FastSdk.exit();
}

@Override
public Resources getResources() {
    return FastSdk.getResources(super.getResources());
}
//以下は更新内容
@Override
protected void onRestoreInstanceState(@NonNull Bundle savedInstanceState) {
    super.onRestoreInstanceState(savedInstanceState);
    FastSdk.onRestoreInstanceState(savedInstanceState);
}

@Override
public void onWindowFocusChanged(boolean hasFocus) {
    super.onWindowFocusChanged(hasFocus);
    FastSdk.onWindowFocusChanged(hasFocus);
}

共有

java
ShareParams params = new ShareParams();
params.setTitle("タイトル");
params.setContent("内容");
params.setPicPath("picPath");//ローカルまたはネットワーク画像リンク
//共有リンク(懂球帝アプリ固定値: dongqiudi://share/circle/)
params.setShareUrl("http://xx.com");

//WeChat画像
params.setBmp(bmp); 

FastSdk.share(ShareType.WX, ShareType.ChildType.WX_CHAT, params);

ShareType

パラメータ名タイプ説明
QQShareTypeQQ共有
WXShareTypeWeChat共有
DQDShareType懂球帝共有
FACEBOOKShareTypeFacebook共有
SYSTEMShareTypeシステム共有

ShareType.ChildType

パラメータ名タイプ説明
WX_CHATShareType.ChildTypeWeChatチャット
WX_CIRCLEShareType.ChildTypeWeChatモーメント
WX_FAVORITESShareType.ChildTypeWeChatお気に入り
QQ_TEXT_AND_QQZONEShareType.ChildTypeテキスト共有 & QQZone同期
QQ_IMG_AND_QQZONEShareType.ChildType画像共有 & QQZone同期
QQ_TEXTShareType.ChildTypeテキスト共有
QQ_IMGShareType.ChildType画像共有
DQDShareType.ChildType懂球帝
FACEBOOK_LINKShareType.ChildTypefacebookリンク
FACEBOOK_IMGShareType.ChildTypefacebook画像
FACEBOOK_VIDEOShareType.ChildTypefacebook動画
SYSTEM_TEXTShareType.ChildTypeシステムテキストリンク共有
SYSTEM_IMGShareType.ChildTypeシステム画像共有
SYSTEM_FILEShareType.ChildTypeシステムファイル共有

ShareParams

パラメータ名タイプ説明必須か
idString懂球帝ID(懂球帝専用)はい
wxTypeint1:チャット, 2:モーメント, 3:お気に入りいいえ
qqTypeint1:デフォルト, 2:画像のみいいえ
showQQZonebooleanQQZoneに表示いいえ
titleStringタイトルいいえ
contentString内容いいえ
picPathString画像urlいいえ
shareUrlStringリンク共有いいえ
callbackUrlString懂球帝コールバックURL(懂球帝専用)はい
bmpBitmapWeChat画像(WeChat画像共有専用)はい

権限申請()

WARNING

ポリシー要件により、センシティブ権限が拒否された場合、複数回申請できません。SDKでは申請回数を1回に制限しています。権限申請時にダイアログ表示有無を設定可能(デフォルトfalse)。true設定時、次回呼び出しで手動承認を促すダイアログが表示されます。権限拒否が機能に影響する場合に表示推奨。

java
//単一危険権限申請、結果を返却
boolean hasPermission = FastSdk.checkPermission(Activity activity, 
    String permission, boolean showRefuseDialog);
//activity:現在のActivityコンテキスト
//permission:権限名
//showRefuseDialog:ダイアログ表示有無(デフォルトtrue、非必須)
boolean hasPermission = FastSdk.checkPermission(activity, 
    Manifest.permission.WRITE_EXTERNAL_STORAGE, true);
if(hasPermission){
    //your code
}

@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
    super.onRequestPermissionsResult(requestCode, permissions, grantResults);
    FastSdk.onRequestPermissionsResult(requestCode, permissions, grantResults);
    // 権限申請結果コールバック
    if (requestCode == Math.abs(Manifest.permission.WRITE_EXTERNAL_STORAGE.hashCode())){
        if(grantResults[0] == PackageManager.PERMISSION_GRANTED){
            Logger.i("権限が許可されました");
            //your code
        }else{
            Logger.i("権限が拒否されました");
        }
    }
}

方舟データレポート(オプション、注: 本APIはSDK経由せず直接方舟に送信)

java
String action = "game_xxx";
Map<String, Object> hashMap = new HashMap<>();
hashMap.put("xxx", 123);
hashMap.put("ooo", "321");
FastSdk.gameDataReport(action, hashMap);

方舟パラメータ

パラメータ名タイプ説明必須
actionStringイベント名はい
hashMapMap<String, Object>イベント内容はい

CD-KEY(オプション、ギフトコード交換)

java
AccessActivityDataInfo info = new AccessActivityDataInfo();
info.setCode("引き換えコード");
FastSdk.accessParticipate(AccessActivityType.CD_KEY, info);

CD-KEYパラメータ

パラメータ名タイプ説明必須
typeAccessActivityTypeアクティビティ種別はい
infoAccessActivityDataInfo引き換えコードオブジェクトはい

Q&A

初期化失敗時に「非正規アプリ」と表示される場合の対処方法は?

署名ファイルが正しくないです。署名ファイルがない場合は運営担当者に連絡してください。

アカウントログイン時にアカウントが存在しないと表示する場合は?

アカウント/パスワード方式には登録機能がありません。運営担当者からアカウント/パスワードを取得してください。

サンドボックス環境での支払いテスト方法?

運営担当者に確認し、サンドボックス環境が有効化されていること、アカウントがテスト白リストに登録されていることを確認してください。

支払いが起動できない?

ゲーム開始時にキャラクター作成またはサーバー入室イベントを送信しているか確認してください。

支払い成功後アイテムが付与されない?

1.支払いコールバックURLが正しいか確認

2.支払いAPIでsetNotifyUrl(url)を呼び出している場合、このURLが優先的にコールバックされます。

チャネルパッケージでゲーム内からログアウト時、フローティングボールが非表示にならない

Fastsdk.logout()が呼び出されていません。ゲームの「設定」画面に2つのボタン(「サーバー切り替え」「アカウント切り替え」)を実装し、「アカウント切り替え」時にFastsdk.logout()を呼び出すことを推奨します。「サーバー切り替え」時はログアウトせず直接サーバー選択画面に遷移することができます。

Hoolai Access SDK