ข้ามไปที่เนื้อหา

Unreal Engine 5

คู่มือนี้อธิบายงานที่ต้องดำเนินการหลังจากติดตั้ง Hive SDK

การตั้งค่าฟีเจอร์หมุนหน้าจออัตโนมัติ

ต้องตั้งค่าต่อไปนี้เมื่อกำหนดทิศทางหน้าจอเป็นทั้งแนวนอนและแนวตั้ง

Android

สำหรับการ build แอป Android หากกำหนดทิศทางหน้าจอเป็นทั้งแนวนอนและแนวตั้ง จำเป็นต้องแก้ไขโค้ดต่อไปนี้เพื่อให้ฟีเจอร์หมุนหน้าจออัตโนมัติทำงานอย่างถูกต้อง

  1. ไปที่ /Engine/Build/Android/Java/src/com/epicgames/unreal/GameActivity.java.template
  2. เพิ่ม API HiveActivity.onConfigurationChanged()
    @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 ที่ใช้สำหรับการลงนามแอปโดยตรงในโปรเจกต์แอป และระบุไฟล์นั้นด้วยการตั้งค่า PremadeIOSEntitlements ของ Unreal Engine

เพื่อให้ฟีเจอร์หลักของ Hive SDK เช่น การแจ้งเตือน Remote Push, Sign in with Apple และ Universal Link ทำงานได้อย่างถูกต้อง ไฟล์ 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 สำหรับ build พัฒนา, false สำหรับ build เผยแพร่ -->
        <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. รายการ entitlement ที่จำเป็นสำหรับแต่ละฟีเจอร์ของ Hive SDK มีดังนี้ ให้ใส่เฉพาะรายการของฟีเจอร์ที่แอปของคุณใช้ ซึ่งต้องเปิดใช้งานเป็น capability ใน provisioning profile ด้วย สำหรับรายละเอียดของแต่ละรายการ โปรดดู เอกสารทางการของ Apple

    ฟีเจอร์ที่ใช้ entitlement ที่จำเป็น
    ทั่วไป (การลงนามแอป) application-identifier, com.apple.developer.team-identifier - แทนที่ {Team ID} และ {Bundle ID} ด้วยค่าของเกม
    Remote Push aps-environment - development สำหรับการพัฒนา และ production สำหรับการเผยแพร่
    Sign in with Apple (IdP) com.apple.developer.applesignin
    Universal Link (Deep Link/ลิงก์เชิญ) com.apple.developer.associated-domains - สำหรับการตั้งค่าโดเมน โปรดดู การตั้งค่า Universal Link
    Game Center login (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 build

    การตั้งค่าจะถูกบันทึกใน Config/DefaultEngine.ini ดังต่อไปนี้ คุณยังสามารถระบุไฟล์ได้โดยแก้ไขไฟล์นี้โดยตรง

    [/Script/MacTargetPlatform.XcodeProjectSettings]
    PremadeIOSEntitlements=(FilePath="{พาธไฟล์ entitlements}")
    ShippingSpecificIOSEntitlements=(FilePath="{พาธไฟล์ entitlements สำหรับเผยแพร่}")
    
  4. หลังจาก build แล้ว ให้ตรวจสอบว่า entitlements ถูกนำไปใช้กับแอปหรือไม่

    codesign -d --entitlements :- {พาธของ .app ที่ build แล้ว}
    
Note
  • หากระบุไฟล์ด้วย PremadeIOSEntitlements ไฟล์นั้นจะถูกนำไปใช้ตามเดิมในขั้นตอนการลงนาม iOS
    • หากไม่มีรายการที่จำเป็น: ฟีเจอร์ที่เกี่ยวข้อง เช่น Push และ Sign in with Apple จะทำงานไม่ถูกต้อง
    • หากมีรายการที่ไม่รองรับ: หากไฟล์ entitlements มีสิทธิ์ที่ไม่ได้ลงทะเบียนใน provisioning profile การติดตั้งแอปและการตรวจสอบ code signing จะล้มเหลว
  • ไฟล์ entitlements ตัวอย่างมีให้ดูเป็นข้อมูลอ้างอิงในพาธ Plugins/HIVESDK/Source/HiveSDKiOS/template/ ของปลั๊กอิน Hive SDK
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];
    // ... remove the previously added block ...
    #endif
    
  2. ลบโค้ด subscribe deep link delegate: อ้างอิงขั้นตอน "การเพิ่มโค้ด Promotion สำหรับการตั้งค่า Deep Link (iOS)" ในคู่มือก่อนหน้า แล้วลบโค้ด subscribe และ handler ลักษณะต่อไปนี้ที่เพิ่มไว้ใน GameInstance หรือคลาสที่คล้ายกัน

    • ลอจิกภายใน handler อาจถูก implement เป็น Promotion::processURI(...) หรือ FHivePromotion::ProcessURI(...) ขึ้นอยู่กับอินเทอร์เฟซที่คุณใช้

      // Subscription code (GameInstance::Init, etc.) - remove
      FIOSCoreDelegates::OnOpenURLwithOptions.AddUObject(this, &UMyGameInstance::ApplicationOpenURL);
      
      // Handler - remove (including the declaration in the header)
      void UMyGameInstance::ApplicationOpenURL(UIApplication* application, NSURL* url, NSDictionary* options)
      {
              Promotion::processURI(std::string([[url absoluteString] UTF8String]));
      }
      
  3. ลบการเรียก bootstrap trigger ใน Blueprint: ลบฟังก์ชัน trigger ที่กำหนดเองในแอปและถูกเรียกจาก Blueprint เช่น RemoveOpenURLDelegate() รวมถึงโหนดเรียกที่เกี่ยวข้องทั้งหมด

    หากลบการ subscribe delegate ภายในแอปข้างต้นอย่างถูกต้องแล้ว โค้ดแก้ไขที่เกี่ยวข้องกับ openURL ซึ่งเคยนำไปใช้กับ custom engine โดยตรง (IOSAppDelegate.h, IOSAppDelegate.cpp) จะไม่ส่งผลต่อการทำงานของเอนจิน ดังนั้นสามารถปล่อยโค้ดดังกล่าวไว้ได้โดยไม่ต้องลบหรือย้อนกลับ