SDKのインストールと適用
iOS要件
iOS環境でGameGuard for Mobile SDKを使用するためには、次の要件を満たす必要があります。
- ~v1.10.1.3
- v1.10.2.0~
- Xcode 15.X
- GameGuard for iOS SDK v1.10.1.3以上
- Xcode 15.4以上
- iOS 12.0以上
- GameGuard for iOS SDK v1.10.2.0以上
Apple側でXcode 15.4未満のバージョンで発生する独自のMinimum OSバグが存在します。
この問題はXcode 15.4バージョンから解決されました。
GameGuard SDKのイ ンストールと適用
GameGuard SDKのダウンロード
GameGuard SDKを適用するために必要な必須ファイルをダウンロードする必要があります。GameGuard ManagerからSDKおよび設定ファイルをダウンロードしてください。
- ~v1.10.1.3
- v1.10.2.0~
| 項目 | 説明 |
|---|---|
| GameGuard SDK | static framework形式で提供されるAppGuardCore.framework |
| GameGuard Config Files | GameGuardの動作に必要な設定ファイル (appguard, appguard.crt, appguard.mf, appguard106000) |
既に使用中のAppGuardCore.xcframeworkはプロジェクトから削除してください。
| 項目 | 説明 |
|---|---|
| GameGuard SDK | static framework形式で提供されるAppGuardCore.xcframework |
| GameGuard Config Files | GameGuardの動作に必要な設定ファイル (appguard, appguard.crt, appguard.mf, appguard106000) |
GameGuard SDKの適用方法
- ~v1.10.1.3
- v1.10.2.0~
-
ダウンロードした
AppGuardCore.frameworkファイルをプロジェクトにコピーします。 -
XcodeでProject > TARGETS:ProjectName > Build Phases > Link Binary With Librariesを選択し、下部の 追加[+] ボタンをクリックします。
-
[Choose frameworks and libraries to add:] ウィ ンドウで [Add Other] ボタンをクリックし、 [Add Files...] を選択します。
-
プロジェクト内にコピーした
AppGuardCore.frameworkファイルを選択し、 [Open] ボタンをクリックします。 -
Link Binary With Librariesセクションに
AppGuardCore.frameworkファイルが追加されていることを確認します。 -
AppGuardCore.frameworkのEmbed属性を
Do Not Embedに設定します。
-
ダウンロードした
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ファイルが追加されていることを確認します。 -
AppGuardCore.xcframeworkのEmbed属性を
Embed & Signに設定します。
- XcodeでProject > TARGETS:ProjectName > Build Settings > Other Linker Flags項目に
-lstdc++,-lzオプションを追加します。
GameGuard Config Filesの適用方法
-
ダウンロードした最新のconfigファイル4つ(
appguard,appguard.crt,appguard.mf,appguard106000)をプロジェクトにコピーします。 -
XcodeでProject > TARGETS:ProjectName > Build Phases > Copy Bundle Resourcesを選択し、下部の 追加[+] ボタンをクリックします。
-
[Choose items to add:] ウィンドウで [Add Other] ボタンをクリックします。
-
プロジェクト内にコピーしたconfigファイル4つを選択し、 [Open] ボタンをクリックします。
-
[Copy Bundle Resources] セクションにconfigファイルが追加されていることを確認します。
Objective-CでのGameGuard SDKの使用
必須APIの適用
GameGuard SDKを使用するためには、次の必須APIを実装する必要があります。
コールバック関数の紹介
GameGuard SDKは、GameGuardの動作状態と検出イベント情報をアプリに伝えるためにコールバック関数を提供します。このコールバック関数はAPPGUARD_INIT APIを通じてGameGuard SDKに登録する必要があります。
typedef void (*PAPPGUARDAPPCALLBACK)(int type, int code, const char *pData);
static void APPGUARD_INIT(PAPPGUARDAPPCALLBACK);
コールバック関数は必ずプロジェクト内で実装し、APPGUARD_INIT呼 び出し時にパラメータとして渡す必要があります。
コールバック関数の実装と登録
コールバック関数はアプリのエントリーポイントで最初に登録される必要があります。一般的にはAppDelegateソースファイルで実装し、登録することが推奨されます。
/**
* GameGuard 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_SUCCESS)
{
/**
* サーバー認証が成功しました。
* descパラメータで渡されたサーバー認証用IDを使用してゲームサーバーで再検証作業を行ってください。
*
* desc : サーバー認証用ID
*/
}
else if(code == APPGUARD_TYPE_CSAUTH_FALSE)
{
/**
* サーバー認証が失敗しました。
* descパラメータで渡されたサーバー認証用IDを使用してゲームサーバーで再検証作業を行ってください。
*
* サーバー認証作業が失敗した原因はクライアントのネットワーク問題である可能性があるため、ゲームサーバーを通じた再検証作業が必ず必要です。
*
* desc : サーバー認証用ID
*/
}
}
}
...
/**
* GameGuard SDKと通信するためのコールバック関数の登録
*
* コールバック関数はAPPGUARD_INIT APIを使用して登録します。
*
* APPGUARD_INIT APIはAppDelegateのdidFinishLaunchingWithOptions関数内で
* 実装することが望ましいです。
*/
- (Bool)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *) launchOptions {
// APPGUARD_INIT APIを使用してコールバック関数をGameGuard SDKに登録
APPGUARD_INIT(AppGuardAppCallback);
}
上記の作業を完了すると、GameGuard SDKを使用する準備が整います。プロジェクトをビルドして実行し、GameGuard SDKが正常に動作するか確認してください。
GameGuard SDKが提供するAPIの詳細については、GameGuard SDK API Referenceを参照してください。
SwiftでのGameGuard SDKの使用
GameGuard Swiftインターフェースの説明
Swiftで作成されたプロジェクトでObjective-Cで書かれたGameGuard APIを使用するには、Bridging Header方式を使用する必要があります。SwiftプロジェクトでObjective-Cで書かれたGameGuard APIを簡単に使用できるように、以下の3つのファイルを提供します。
| ファイル名 | 説明 | 言語 |
|---|---|---|
AppGuard-Bridging-Header.h | SwiftとObjective-Cモジュールを連携するためのBridging Header | Objective-C |
AppGuardWarpper.h | GameGuard APIインターフェースの宣言 | Objective-C |
AppGuardWarpper.mm | GameGuard APIインターフェースの実装 | Objective-C |
GameGuard SwiftインターフェースのBridging適用
-
ダウンロードしたGameGuard Swiftインターフェースフォルダ /appguard_swift_interfaces 内の3つのファイル(
AppGuard-Bridging-Header.h,AppGuardWrapper.h,AppGuardWrapper.mm)をプロジェクトフォルダにコピーします。 -
コピーしたファイルをXcodeプロジェクトに [Drag & Drop] で追加します。
-
[Choose options for adding these files:] ウィンドウで [Finish] ボタンをクリックします。
-
[Would you like to configure an Objective-C bridging header?] ウィンドウで [Don't Create] ボタンをクリックします。
-
Project > TARGETS:プロジェクト名 > Build Settings > Swift Compiler - General > Objective-C Bridging Header 項目に
$(SRCROOT)/MyProject/AppGuard-Bridging-Header.hパスを追加します。
上記の作業を完了すると、SwiftプロジェクトでGameGuard APIを使用する準備が整います。
GameGuard Swift API必須適用
コールバック関数の紹介
Swiftプロジェクトの場合、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を初期化し、SDKと通信するための必須API関数です。以下のサンプルコードのようにAppDelegate.swiftのapplication関数内でGameGuard初期化関数のAPPGUARD_INIT APIを必ず呼び出してください。これはSwiftプロジェクトでコールバック関数を登録する作業です。
// AppDelegate.swift
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions:
[UIApplicationLaunchOptionsKey: Any]?) -> Bool {
//* APPGUARD_INIT APIを使用してコールバック関数をGameGuard SDKに登録
let obj = AppGuardWarpper()
obj.initAppGuard()
return true
}
上記の作業を完了すると、SwiftプロジェクトでGameGuardを使用するためのすべての準備が整います。
GameGuard SDKが提供するAPIの詳細については、GameGuard SDK API Referenceを参照してください。