ข้ามไปยังเนื้อหา
กลับหน้ารายการบทความ

Microsoft แนะย้าย .NET MAUI ไป UIKit Scene Lifecycle ก่อน Build ด้วย Xcode 27

แอปที่ขึ้น splash แล้วปิดต้องตรวจ SceneDelegate, Info.plist และ callback สำคัญ ไม่ใช่แค่ build ผ่าน

Microsoft แนะย้าย .NET MAUI ไป UIKit Scene Lifecycle ก่อน Build ด้วย Xcode 27

Microsoft เผยแพร่คู่มือวันที่ 19 ตุลาคม 2026 สำหรับเตรียม .NET MAUI app ให้ทำงานกับ Xcode 27 และ iOS 27 หลังพบอาการที่แอป build และติดตั้งได้ แต่ขึ้น splash screen แล้วหายไป หาก device log แสดง UIScene life cycle is required for apps built with this SDK. ทีมต้องตรวจการย้ายไป UIKit scene lifecycle ไม่ใช่ไล่แก้ทุกปัญหา launch ด้วยการอัปเดต package แบบสุ่ม

สาเหตุและขอบเขต

Microsoft อธิบายว่า Xcode 27 กำหนดให้แอป iOS ที่ build ด้วย SDK นี้ใช้ scene lifecycle จัดการหน้าต่างและการเปลี่ยนสถานะ foreground/background .NET MAUI รองรับอยู่แล้ว แต่โปรเจกต์เก่าที่ใช้ application lifecycle อย่างเดียวจะไม่ถูกเขียนไฟล์ platform ใหม่ให้อัตโนมัติเมื่ออัปเดต workload ปัญหาไม่เฉพาะเครื่องรูปแบบใด และ binary เก่าที่ build ด้วย SDK ก่อนหน้าไม่ได้พังทันทีเพียงเพราะผู้ใช้อัปเดต iOS

สำหรับแอปพื้นฐานต้องมี scene delegate และรายการใน Info.plist แต่แอปที่ใช้งานจริงมักมี callback ซับซ้อน เช่น OAuth redirect, deep link, notification tap และ App Actions การแก้ให้เปิดได้โดยไม่ทดสอบ flow เหล่านี้อาจสร้าง regression เงียบ ๆ จึงต้องตรวจ lifecycle behavior ทั้งระบบ

ขั้นตอนที่ทีมควรทำ

ตรวจ .NET SDK, MAUI package, Apple workload และ Xcode ที่ใช้อยู่ก่อน maui doctor ช่วยสำรวจ toolchain ตามคู่มือ Microsoft ระบุว่า .NET 10 iOS/Mac Catalyst workload รุ่นที่กล่าวถึงต้องจับคู่กับ Xcode 27.0 และแนะนำ MAUI package 10.0.110 หรือสูงกว่า ก่อนเปิด scenes เพราะรุ่นนี้มีการส่ง App Actions และ WebAuthenticator ผ่าน scene ด้วย หากใช้เวอร์ชันเก่า แอปอาจเปิดได้แต่ integration เหล่านั้นไม่ทำงาน

โปรเจกต์ที่มี MauiUISceneDelegate และ scene manifest อยู่แล้วไม่ควรเพิ่ม delegate ซ้ำ ให้ตรวจการลงทะเบียนและทดสอบบน iOS 27 ส่วนโปรเจกต์ที่ยังไม่มี ให้เพิ่มไฟล์ platform และค่า plist ตามคู่มือโดยรักษา custom scene configuration เดิม บันทึก diff, build ทั้ง target ที่เกี่ยวข้อง แล้วทดสอบ cold launch, warm launch, login redirect, deep link และ multi-window ตามความสามารถของแอป

Microsoft มี maui-xcode27-migration agent skill ผ่าน MAUI CLI สำหรับช่วยตรวจและแก้ แต่ tooling ยังเป็น preview/experimental และไม่อยู่ใน Microsoft Support Policy ตามประกาศ การติดตั้ง skill ไม่ได้เปลี่ยนแอปเอง ผู้ใช้ยังต้องสั่งงาน ตรวจ diff และยืนยันผล อย่าให้ agent ลด OS support หรือเปลี่ยน SDK โดยไม่มีการรีวิว

จุดตัดสินก่อนปล่อยขึ้น Store

ถ้า CI build ผ่านแต่แอปเปิดแล้วปิด ต้องเก็บ device log และทดสอบบนอุปกรณ์จริง/Simulator ที่ตรง SDK ไม่แก้ด้วยการปิด Xcode compatibility check แบบฝืนระบบ เมื่อ migration ผ่านแล้วให้มี smoke test ของ callback ที่ลูกค้าใช้จริง เพราะประสบการณ์ผู้ใช้ไม่ได้จบที่หน้าแรกแสดงได้ คู่มือใหม่ช่วยให้ทีมเห็นว่าการย้าย lifecycle เป็นงานแพลตฟอร์มที่ต้องตรวจพฤติกรรมแอป ไม่ใช่เพียงแก้ error ตัวเดียว

คู่มือต้นทาง: https://devblogs.microsoft.com/dotnet/migrate-dotnet-maui-apps-uikit-scene-lifecycle/