メインコンテンツまでスキップ
バージョン: 1.10.x

SDKのインストールと適用

iOS要件


iOS環境でGameGuard for Mobile SDKを使用するためには、次の要件を満たす必要があります。

  • Xcode 15.X
  • GameGuard for iOS SDK v1.10.1.3以上

GameGuard SDKのインストールと適用


GameGuard SDKのダウンロード

GameGuard SDKを適用するために必要な必須ファイルをダウンロードする必要があります。GameGuard ManagerからSDKおよび設定ファイルをダウンロードしてください。

項目説明
GameGuard SDKstatic framework形式で提供されるAppGuardCore.framework
GameGuard Config FilesGameGuardの動作に必要な設定ファイル (appguard, appguard.crt, appguard.mf, appguard106000)
ヒント

既に使用中のAppGuardCore.xcframeworkはプロジェクトから削除してください。

GameGuard SDKの適用方法

  1. ダウンロードしたAppGuardCore.frameworkファイルをプロジェクトにコピーします。

  2. XcodeでProject > TARGETS:ProjectName > Build Phases > Link Binary With Librariesを選択し、下部の 追加[+] ボタンをクリックします。

  3. [Choose frameworks and libraries to add:] ウィンドウで [Add Other] ボタンをクリックし、 [Add Files...] を選択します。

  4. プロジェクト内にコピーしたAppGuardCore.frameworkファイルを選択し、 [Open] ボタンをクリックします。

  5. Link Binary With LibrariesセクションにAppGuardCore.frameworkファイルが追加されていることを確認します。

  6. AppGuardCore.frameworkEmbed属性をDo Not Embedに設定します。

  • XcodeでProject > TARGETS:ProjectName > Build Settings > Other Linker Flags項目に-lstdc++, -lzオプションを追加します。

GameGuard Config Filesの適用方法

  1. ダウンロードした最新のconfigファイル4つ(appguard, appguard.crt, appguard.mf, appguard106000)をプロジェクトにコピーします。

  2. XcodeでProject > TARGETS:ProjectName > Build Phases > Copy Bundle Resourcesを選択し、下部の 追加[+] ボタンをクリックします。

  3. [Choose items to add:] ウィンドウで [Add Other] ボタンをクリックします。

  4. プロジェクト内にコピーしたconfigファイル4つを選択し、 [Open] ボタンをクリックします。

  5. [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ソースファイルで実装し、登録することが推奨されます。

AppDelegate.m
/**
* 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.hSwiftとObjective-Cモジュールを連携するためのBridging HeaderObjective-C
AppGuardWarpper.hGameGuard APIインターフェースの宣言Objective-C
AppGuardWarpper.mmGameGuard APIインターフェースの実装Objective-C

GameGuard SwiftインターフェースのBridging適用

  1. ダウンロードしたGameGuard Swiftインターフェースフォルダ /appguard_swift_interfaces 内の3つのファイル(AppGuard-Bridging-Header.h, AppGuardWrapper.h, AppGuardWrapper.mm)をプロジェクトフォルダにコピーします。

  2. コピーしたファイルをXcodeプロジェクトに [Drag & Drop] で追加します。

  3. [Choose options for adding these files:] ウィンドウで [Finish] ボタンをクリックします。

  4. [Would you like to configure an Objective-C bridging header?] ウィンドウで [Don't Create] ボタンをクリックします。

  5. 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
// 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.swiftapplication関数内でGameGuard初期化関数のAPPGUARD_INIT APIを必ず呼び出してください。これはSwiftプロジェクトでコールバック関数を登録する作業です。

AppDelegate.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を参照してください。

GameGuard SDK Privacy Manifestsの適用


GameGuard SDK v1.10.1.3バージョン以上でPrivacy Manifestsを適用するには、次の手順に従ってください。

AppGuardCore.frameworkのモジュールはAppGuardCore.frameworkをリンクするTARGETSにマージされて配布されます。

AppleのPrivacy Manifestsに関連するPrivacyInfo.xcprivacyは、GameGuard SDKをリンクしたTARGETSのPrivacyInfo.xcprivacyにAppGuardCore.frameworkのPrivacyInfo.xcprivacy内容が含まれている必要があります。

したがって、PrivacyInfo.xcprivacyにAppGuardCore.framework関連の内容を追加するには、以下のガイドを参考にしてマージ作業を行ってください。

  • Xcodeプロジェクトに既に使用中のPrivacyInfo.xcprivacyファイルが存在する場合

    • AppGuardCore.framework内部のPrivacyInfo.xcprivacyファイルと既存のPrivacyInfo.xcprivacyファイルを比較して、欠落している部分を確認してください。
    • 欠落している部分がある場合、それを既存のPrivacyInfo.xcprivacyファイルに追加してマージしてください。
  • Xcodeプロジェクトに PrivacyInfo.xcprivacyファイルが存在しない場合

    • GameGuard Config Filesの追加方法と同様に、以下の手順を進めてください。
      • AppGuardCore.framework内部のPrivacyInfo.xcprivacyファイルをコピーしてXcodeプロジェクトに追加します。

      • XcodeでProject > TARGETS:ProjectName > Build Phases > Copy Bundle Resourcesを選択し、下部の 追加[+] ボタンをクリックします。

      • [Choose items to add:] ウィンドウで [Add Other] ボタンをクリックします。

      • コピーしたPrivacyInfo.xcprivacyファイルを選択し、[Open] ボタンをクリックします。

      • [Copy Bundle Resources] セクションにPrivacyInfo.xcprivacyファイルが追加されていることを確認します。

備考

GameGuard for iOS SDK v1.10.1.3バージョン以上では、AppGuardCore.frameworkの名称で配布されており、該当SDKはstatic frameworkとして制作されて配布されています。

ヒント

GameGuard for iOS SDK v1.10.1.3バージョン以上では、Appleが要求したPrivacy Manifestで明示されたRequired reason API項目のうち、NSPrivacyAccessedAPICategoryUserDefaults以外のAPIは使用していません。

static frameworkとしてリンクされる他社SDKの場合も、GameGuard SDKと同様に顧客のPrivacyInfo.xcprivacyにマージ作業が必要な場合があります。