コンテンツにスキップ

Unreal Engine 5

Hive SDKをインストールした後に実行する作業について説明します。

画面の自動回転機能の設定

画面方向をランドスケープとポートレートの両方に設定する場合は、以下の設定が必要です。

Android

Androidアプリビルドで画面方向をランドスケープとポートレートの両方に設定する場合、画面の自動回転機能を正常に動作させるには、以下のコード変更が必要です。

  1. /Engine/Build/Android/Java/src/com/epicgames/unreal/GameActivity.java.templateに移動します。
  2. HiveActivity.onConfigurationChanged() APIを追加します。
    @Override
    public void onConfigurationChanged(Configuration newConfig)
    {
    HiveActivity.onConfigurationChanged(this, newConfig); // Add
    super.onConfigurationChanged(newConfig);
    
    
    // forward the orientation
    boolean bPortrait = newConfig.orientation == Configuration.ORIENTATION_PORTRAIT;
    nativeOnConfigurationChanged(bPortrait);
    }
    

iOS

Hive SDK Unreal Engine 5 iOSでは、画面の自動回転に関する別途設定は必要ありません。

Entitlementsの設定(iOS)

アプリ署名に使用するentitlementsファイルはアプリプロジェクトで直接管理し、Unreal EngineのPremadeIOSEntitlements設定で指定します。

リモートプッシュ通知、Appleログイン、Universal LinkなどHive SDKの主要機能を正常に動作させるには、そのentitlementsファイルに各機能の権限項目を含める必要があります。

  1. アプリプロジェクトにentitlementsファイルを作成します。例:Build/IOS/YourGame.entitlements。以下はHive SDK機能を基準にした設定例です。

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
    <plist version="1.0">
    <dict>
        <key>application-identifier</key>
        <string>{Team ID}.{Bundle ID}</string>
        <key>com.apple.developer.team-identifier</key>
        <string>{Team ID}</string>
        <!-- 開発ビルドはtrue、配布ビルドはfalse -->
        <key>get-task-allow</key>
        <false/>
        <key>aps-environment</key>
        <string>production</string>
        <key>com.apple.developer.applesignin</key>
        <array>
            <string>Default</string>
        </array>
        <key>com.apple.developer.associated-domains</key>
        <array>
            <string>applinks:{ゲームで使用するドメイン}</string>
        </array>
        <key>com.apple.developer.game-center</key>
        <true/>
    </dict>
    </plist>
    
  2. Hive SDK機能ごとに必要なentitlement項目は以下のとおりです。アプリで使用する機能(プロビジョニングプロファイルで有効化されたcapability)に対応する項目のみを含めてください。各項目の詳細については、Apple公式ドキュメントを参照してください。

    使用する機能 必要なentitlement
    共通(アプリ署名) application-identifiercom.apple.developer.team-identifier - {Team ID}{Bundle ID}をゲームの値に置き換える
    Remote Push aps-environment - 開発はdevelopment、配布はproduction
    Appleログイン(IdP) com.apple.developer.applesignin
    Universal Link(Deep Link・招待リンク) com.apple.developer.associated-domains - ドメイン設定はUniversal Linkの設定を参照
    Game Centerログイン(IdP) com.apple.developer.game-center
    年齢申告(AgeRangeモジュール) com.apple.developer.declared-age-range - 詳細はApp Storeコンプライアンスを参照
  3. Unreal EditorメニューでEdit > Project Settingsをクリックし、左側のパネルでPlatforms > Xcode Projectを選択します。Entitlementsセクションで、作成したentitlementsファイルを指定します。

    項目 説明
    iOS: Entitlements アプリ署名に使用するentitlementsファイル
    iOS: Entitlements (override shipping configuration) Shippingビルドで別のファイルを使用する場合に指定

    設定はConfig/DefaultEngine.iniに以下のように保存されます。ファイルを直接編集して指定することもできます。

    [/Script/MacTargetPlatform.XcodeProjectSettings]
    PremadeIOSEntitlements=(FilePath="{entitlementsファイルのパス}")
    ShippingSpecificIOSEntitlements=(FilePath="{配布用entitlementsファイルのパス}")
    
  4. ビルド後、entitlementsがアプリに適用されているか確認します。

    codesign -d --entitlements :- {ビルドされた.appのパス}
    
Note
  • PremadeIOSEntitlementsでファイルを指定すると、iOS署名段階でそのファイルがそのまま適用されます。
    • 必須項目が不足している場合:Push、Appleログインなどの関連機能が正常に動作しません。
    • 未対応項目が含まれている場合:プロビジョニングプロファイルに登録されていない権限がentitlementsファイルに含まれていると、アプリのインストールおよびコード署名検証に失敗します。
  • Hive SDKプラグインのPlugins/HIVESDK/Source/HiveSDKiOS/template/パスに、参考用のサンプルentitlementsファイルが含まれています。
Warning

サンプルentitlementsファイルはテスト目的でほぼすべての権限項目を有効化しています。プロジェクトにそのままコピーして使用しないでください。必ずゲームサービスに必要な有効項目のみを選択して使用してください。

HIVEAppDelegateの適用(iOS)

Hive SDK v4 26.4.1以降では、HIVEAppDelegate swizzlingがHive SDKプラグイン内部で自動的に実行されます。アプリ起動時にプラグインが自動で処理するため、アプリコードで追加作業を行う必要はありません。

v4 26.4.1より前のバージョン向け既存連携コードの削除

Hive SDK v4 26.4.1より前のバージョンを使用している場合は、更新時に以前の修正を削除してください。

  1. HIVEAppDelegate手動呼び出しコードの削除:以前のガイドの「HIVEAppDelegateの適用(iOS)」手順を参照し、アプリ初期化時に追加した以下のようなコードブロックをプロジェクトから削除してください。

    #if PLATFORM_IOS
    UIApplication * dummyApplication = [UIApplication sharedApplication];
    
    Class clzHIVEAppDelegate = NSClassFromString(@"HIVEAppDelegate");
    SEL selApplicationDidFinishLaunchingWithOptions = NSSelectorFromString(@"application:didFinishLaunchingWithOptions:");
    if( clzHIVEAppDelegate != nil && [clzHIVEAppDelegate respondsToSelector:selApplicationDidFinishLaunchingWithOptions] ) {
            NSMethodSignature *method = [clzHIVEAppDelegate methodSignatureForSelector:selApplicationDidFinishLaunchingWithOptions];
            if (method != nil) {
                    NSInvocation *invocation = [NSInvocation invocationWithMethodSignature:method];
                    [invocation setSelector:selApplicationDidFinishLaunchingWithOptions];
                    [invocation setTarget:clzHIVEAppDelegate];
                    [invocation setArgument:(void*)&dummyApplication atIndex:2];
                    NSDictionary *localLaunchOptions = [IOSAppDelegate GetDelegate].launchOptions;
                    if( localLaunchOptions != nil ) {
                            [invocation setArgument:(void*)&localLaunchOptions atIndex:3];
                    }
                    [invocation invoke];
            }
    }
    #endif
    
  2. Deep Linkデリゲート購読コードの削除:以前のガイドの「Deep Link設定のためのプロモーションコード追加(iOS)」手順を参照し、GameInstanceなどに追加した以下のような購読およびハンドラーコードを削除してください。

    • ハンドラー内部のロジックは、使用しているインターフェースに応じてPromotion::processURI(...)またはFHivePromotion::ProcessURI(...)として実装されている場合があります。

      // 購読コード(GameInstance::Initなど)- 削除
      FIOSCoreDelegates::OnOpenURLwithOptions.AddUObject(this, &UMyGameInstance::ApplicationOpenURL);
      
      // ハンドラー - 削除(ヘッダーの宣言を含む)
      void UMyGameInstance::ApplicationOpenURL(UIApplication* application, NSURL* url, NSDictionary* options)
      {
              Promotion::processURI(std::string([[url absoluteString] UTF8String]));
      }
      
  3. Blueprintのブートストラップトリガー呼び出しの削除:アプリで独自に定義しBlueprintから呼び出していたトリガー関数(例:RemoveOpenURLDelegate())と該当する呼び出しノードをすべて削除してください。

    上記のアプリ内デリゲート購読が正常に削除されていれば、カスタムエンジンに直接適用した既存のopenURL関連修正コード(IOSAppDelegate.hIOSAppDelegate.cpp)はエンジン動作に影響しません。そのため、そのコードは削除またはロールバックせず、そのまま維持しても問題ありません。