SDKのインストールと適用
GameGuard for Mobile SDKの適用
GameGuard for Mobile SDKのダウンロード
GameGuard for Mobile SDKを適用するためには、以下のように必要なファイルが必要です。
GameGuard for Mobile ManagerからGameGuard for Mobile SDKと連携するために必要な設定ファイルをダウンロードしてください。
| 項目 | 説明 |
|---|---|
| GameGuard for Mobile SDK | static framework形式で提供されるAppGuardCore.xcframework |
| GameGuard for Mobile Config Files | GameGuard for Mobile動作に必要な設定ファイル(appguard, appguard.crt, appguard.mf, appguard106000) |
GameGuard for Mobile SDKの適用
-
ダウンロードした
AppGuardCore.xcframeworkファイルをプロジェクト内にコピーします。 -
Xcodeプロジェクトを開いて Project > TARGETS:ProjectName > Build Phases > Link Binary With Libraries を順に選択し、下部の 追加[+] ボタンをクリックします。
-
[Choose frameworks and libraries to add:] ウィンドウで下部の [Add Other] ボタンをクリック後 [Add Files...] ボタンをクリックします。
-
次の画面でプロジェクト内に存在する
AppGuardCore.xcframeworkファイルを選択し、[Open] ボタンをクリックします。 -
プロジェクト内の [Link Binary With Libraries] に
AppGuardCore.xcframeworkファイルが追加されました。 -
Xcodeプロジェクト内 Project > TARGETS:ProjectName > Build Settings > Other Linker Flags 項目に
-lstdc++,-lzオプションを追加します。
GameGuard for Mobile Config Filesの適用
-
ダウンロードした最新のconfig 4つ(
appguard,appguard.crt,appguard.mf,appguard106000)ファイルをプロジェクト内部フォルダにコピーします。 -
プロジェクトを開いて Project > TARGETS:ProjectName > Build Phases > Copy Bundle Resources を順に選択し、下部の 追加[+] ボタンをクリックします。
-
[Choose items to add:] ウィンドウで下部の [Add Other] ボタンをクリックします。
-
次の画面でプロジェクト内に存在するconfigファイル4つを選択し、[Open] ボタンをクリックします。
-
[Choose options for adding these files:] ウィンドウで [Destination:Copy items if needed] "ON"にチェック、[Added folders:Create groups] にチェックした後、右下の [Finish] ボタンをクリックします。
-
プロジェクト内の [Copy Bundle Resources] に4つのconfigファイルが追加されたことを確認します。
Objective-C
GameGuard for Mobile SDKを使用するためには、以下に案内する必須APIを実装する必要があります。
必須APIの適用
GameGuard for Mobile SDKを使用するためには、以下に案内する必須APIを実装する必要があります。
コールバック関数の紹介
GameGuard for Mobile SDKは、GameGuard for Mobileの動作状態や検出イベント情報などのデータをアプリに伝達するために、以下のようなコールバック関数を提供しています。これらのコールバック関数は、APPGUARD_INIT APIを通じてGameGuard for Mobile SDKに登録します。
typedef void (*PAPPGUARDAPPCALLBACK)(int type, int code, const char *pData);
static void APPGUARD_INIT(PAPPGUARDAPPCALLBACK);
コールバック関数は、適用するプロジェクト内で必ず実装し、APPGUARD_INIT 呼び出し時にパラメータとして渡される必要があります。
コールバック関数の実装と登録
コールバック関数はアプリのエントリーポイントの最初に登録される必要があります。 一般に、AppDelegateのソースファイルで実装および登録することを推奨します。
/**
* GameGuard for Mobile SDKとの通信用コールバック関数を宣言する
* 通常、AppDelegateソースファイルの上部での実装を推奨します。
*/
#import <AppGuardCore/AppGuard.h>
#import <AppGuardCore/AppGuardDefine.h>
static void AppGuardAppCallback(int type, int code, const char* desc)
{
if(type == APPGUARD_TYPE_KILL)
{
/**
* 検出内容がポリシーによってkillオプションに設定されている場合に通知し、強制終了を要求します。
* このメッセージ通知が検出された場合、アプリは強制終了させる必要があります。
* メッセージボックスを通じて通知後、アプリを終了することを推奨します。
*/
}
else if(type == APPGUARD_TYPE_S2AUTH_CALLBACK)
{
if(code == APPGUARD_TYPE_CSAUTH_SUCESS)
{
/**
* サーバー認証処理が成功しました。
* descパラメーターで渡されるサーバー認証用IDを使用して、ゲームサーバーで再検証作業を
* 行ってください。
*
* desc: サーバー認証用ID
*/
}
else if(code == APPGUARD_TYPE_CSAUTH_FALSE)
{
/**
* サーバー認証処理が失敗しました。
* descパラメーターで渡されるサーバー認証用IDを使用して、ゲームサーバーで再検証作業を
* 行ってください。
*
* サーバー認証処理の失敗は、クライアントのネットワーク問題による失敗の可能性があるため、
* ゲームサーバーを通じて再検証作業を必ず行ってください。
*
* desc: サーバー認証用ID
*/
}
}
}
...
/**
* GameGuard for Mobile SDKとの通信用コールバック関数を登録する
*
* コールバック関数の登録はAPPGUARD_INIT APIを使用して行います。
*
* APPGUARD_INIT APIの使用は、AppDelegateのdidFinishLaunchingWithOption関数内で
* 実装することを推奨します。
*/
- (Bool)application:(UIApplication *)application didFinishLaunchingWithOption:(NSDictionary *) launchOptions {
// APPGUARD_INIT APIを使用してコールバック関数をGameGuard for Mobile SDKに登録
APPGUARD_INIT(AppGuardAppCallback);
}
この段階まで進めたら、GameGuard for Mobile SDKを使用するための基本的な作業が完了したことになります。プロジェクトのビルドと実行を通じて、GameGuard for Mobile SDKが正常に動作しているかを確認してください。
GameGuard for Mobile SDKで提供されるAPIの詳細情報については、GameGuard for Mobile SDK API リファレンスを参照してください。
Swift
GameGuard for Mobile Swift インターフェース説明
Swiftで作成されたProjectでObjective-Cで作成されたGameGuard for Mobile APIを使用するためには、Bridging Header方式を利用する必要があります。Swift ProjectでObjective-Cで作成されたGameGuard for Mobile APIを使用するお客様の便宜を図るため、以下の3つのファイルを別途提供しています。
| ファイル名 | 説明 | 言語 |
|---|---|---|
AppGuard-Bridging-Header.h | SwiftとObjective-Cモジュールを連携するためのBridging Header | Objective-C |
AppGuardWarpper.h | GameGuard for Mobile APIインターフェース宣言 | Objective-C |
AppGuardWarpper.mm | GameGuard for Mobile APIインターフェース呼び出し実装 | Objective-C |
GameGuard for Mobile Swift インターフェースBridging適用
-
ダウンロードしたGameGuard for Mobile Swift インターフェース**/appguard_swift_interfaces**フォルダ内の3つ(
AppGuard-Bridging-Header.h,AppGuardWarpper.h,AppGuardWarpper.mm)のファイルをプロジェクト内部のフォルダ(Project/)にコピーします。 -
プロジェクト内にコピーしたGameGuard for Mobile Swift インターフェースファイル3つを**[Drag & Drop]**でプロジェクトに追加します。
-
[Choose options for adding these files:] ウィンドウの下部にある [Finish] ボタンをクリックします。
-
[Would you like to configure an Objective-C bridging header?] ウィンドウで [Don't Create] ボタンをクリックします。
-
プロジェクト内にGameGuard for Mobile Swift インターフェースファイル3つ(
AppGuard-Bridging-Header.h,AppGuardWarpper.h,AppGuardWarpper.mm)が追加されたことを確認します。 -
Project > TARGETS:プロジェクト名 > Build Settings > Swift Compiler - General > Objective-C Bridging Header 項目に
$(SRCROOT)/MyProject/AppGuard-Bridging-Header.hのパス値を追加します。
上記の手順を正常に完了した場合、Swift ProjectでGameGuard for Mobile APIを使用する準備が整いました。
GameGuard for Mobile Swift API 必須適用
コールバック関数の紹介
Swift Projectの場合、AppGuardWarpper.mmファイルの上部にAPPGUARDGAMECALLBACK関数が定義されています。この関数は、悪意のあるユーザーによって引き起こされる異常な振る舞いを検出し報告します。検出内容に管理者ページで設定されたセキュリティポリシーの条件により強制終了が必要な場合、その内容をアプリに通知します。
以下のサンプルコードと同様に適用することで、検出および報告内容の受け取りに対応できます。
// AppGuardWarpper.mm
static void APPGUARDGAMECALLBACK(int type, int code, const char* desc)
{
if(type == APPGUARD_TYPE_KILL)
{
/**
* 検出内容がポリシーによってkillオプションに設定されている場合に通知し、強制終了を要求します。
* このメッセージ通知が検出された場合、アプリは強制終了させる必要があります。
* メッセージボックスを通じて通知後、アプリを終了することを推奨します。
*/
}
else if(type == APPGUARD_TYPE_S2AUTH_CALLBACK)
{
if(code == APPGUARD_TYPE_CSAUTH_SUCCESS)
{
/**
* サーバー認証処理が成功しました。
* descパラメータで提供されるサーバー認証IDを使用して、ゲームサーバーで再検証作業を
* 行ってください。
*
* desc: サーバー認証ID
*/
}
else if(code == APPGUARD_TYPE_CSAUTH_FALSE)
{
/**
* サーバー認証処理が失敗しました。
* descパラメータで提供されるサーバー認証IDを使用して、ゲームサーバーで再検証作業を
* 行ってください。
*
* サーバー認証処理の失敗はクライアントのネットワーク問題によるものかもしれませんので、
* ゲームサーバーを通じて再検証作業を必ず行ってください。
*
* desc: サーバー認証ID
*/
}
}
}
APPGUARDGAMECALLBACK() 関数内に終了メッセージ処理ロジックを実装してください。
実際のサービスリリース時には、上記のAPPGUARDGAMECALLBACK() 関数内のログ出力関数を必ず削除してください。
コールバック関数の登録
GameGuard for Mobileの動作およびGameGuard for Mobile SDKとの通信を担当する必要なAPI関数です。
以下のサンプルコードと同様に、AppDelegate.swiftのapplication関数内でGameGuard for Mobileの初期化関数であるAPPGUARD_INIT APIを必ず呼び出してください。これはSwift Projectでのコールバック関数の登録を意味します。
// AppDelegate.swift
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions:
[UIApplication.LaunchOptionsKey: Any]?) -> Bool {
//* APPGUARD_INIT APIを使用して、コールバック関数をGameGuard for Mobile SDKに登録
let obj = AppGuardWarpper()
obj.initAppGuard()
return true
}
上記の作業を正常に行った場合、SwiftプロジェクトでGameGuard for Mobileを使用するための準備が整いました。
GameGuard for Mobile SDKで提供されるAPIの詳細については、GameGuard for Mobile SDK APIリファレンスを参照してください。