สรุปฟีเจอร์ใหม่ของ iOS
ฟีเจอร์ใหม่ใน iOS 14
ฟีเจอร์ใหม่ใน iOS 14 มี APP Clip, Clipboard, การป้องกันความเป็นส่วนตัว และฟีเจอร์ใหม่อื่น ๆ แต่ ไม่มีฟีเจอร์ใหม่ที่เกี่ยวข้องกับการแจ้งเตือน (Notification)
ฟีเจอร์ใหม่ใน iOS 13
ฟีเจอร์ใหม่ของ iOS 13 มี Dark Mode, Swift UI และฟีเจอร์ใหม่อื่น ๆ แต่ ไม่มีฟีเจอร์ใหม่ที่เกี่ยวข้องกับการแจ้งเตือน
ฟีเจอร์ใหม่ใน iOS 12
การจัดกลุ่มการแจ้งเตือน (Grouping Push)
ใน iOS 12 การแจ้งเตือนประเภทเดียวกันจะถูกจัดรวมเป็น กลุ่มการแจ้งเตือน ผู้ใช้สามารถกดขยายเพื่อดูการแจ้งเตือนทั้งหมดในกลุ่มนั้นได้
การจัดกลุ่มการแจ้งเตือนมี 2 วิธี:
- การจัดกลุ่มอัตโนมัติ (Automatic grouping) → ระบบจะจัดกลุ่มตาม
bundleId
ของแอป โดยนักพัฒนาไม่ต้องทำอะไรเพิ่มเติม - Thread Identifier → ถ้าต้องการจัดกลุ่มละเอียดมากขึ้น ให้ใช้งาน
threadIdentifier
ผู้ใช้สามารถตั้งค่าการจัดกลุ่มได้: อัตโนมัติ, ตามแอปพลิเคชัน, หรือ ปิด
threadIdentifier
มีมาตั้งแต่ iOS 10 แต่เริ่มถูกใช้งานจริงใน iOS 12
@property (NS_NONATOMIC_IOSONLY, copy) NSString *threadIdentifier __TVOS_PROHIBITED;
การตั้งค่ารูปแบบสรุป (Summary Format Setting)
หลังจากที่การแจ้งเตือนถูกจัดกลุ่มแล้ว ด้านล่างจะมีข้อความสรุป (digest) เริ่มต้นจะแสดงเป็น n more notifications แต่สามารถกำหนดรูปแบบเองได้:
- กำหนดผ่าน
UNNotificationCategory
+ (instancetype)categoryWithIdentifier:(NSString *)identifier
actions:(NSArray<UNNotificationAction *> *)actions
intentIdentifiers:(NSArray<NSString *> *)intentIdentifiers
hiddenPreviewsBodyPlaceholder:(nullable NSString *)hiddenPreviewsBodyPlaceholder
categorySummaryFormat:(nullable NSString *)categorySummaryFormat
options:(UNNotificationCategoryOptions)options __IOS_AVAILABLE(12.0) __WATCHOS_PROHIBITED;
- กำหนดผ่าน
UNNotificationContent
@property (NS_NONATOMIC_IOSONLY, readonly, copy) NSString *summaryArgument __IOS_AVAILABLE(12.0);
@property (NS_NONATOMIC_IOSONLY, readonly, assign) NSUInteger summaryArgumentCount __IOS_AVAILABLE(12.0);
การจัดการการแจ้งเตือน (Inform Management)
Apple เพิ่มปุ่ม Manage เมื่อผู้ใช้ปัดการแจ้งเตือนไปทางซ้าย
การอนุญาตชั่วคราว (Temporary Authorization)
การแจ้งเตือนบางประเภทจะมีปุ่มให้ผู้ใช้เลือกอนุญาตทันที
การแจ้งเตือนเร่งด่วน (Critical Alerts)
เช่น การแจ้งเตือนความปลอดภัยในบ้าน สุขภาพ หรือเหตุฉุกเฉินสาธารณะ การแจ้งเตือนประเภทนี้ต้องใช้ ใบรับรองพิเศษ และผู้ใช้ต้องตอบสนอง
ฟีเจอร์ใหม่ใน iOS 10
คำแนะนำ
iOS 10 เพิ่มฟีเจอร์หลายอย่างที่เกี่ยวข้องกับการแจ้งเตือน (ดูรายละเอียดเพิ่มเติมที่บล็อก EngageLab)
iOS 10 Service Extension
คำแนะนำ
Service Extension ถูกเพิ่มเข้ามาใน iOS 10
ฟีเจอร์นี้ทำให้สามารถปรับแต่งการแจ้งเตือนก่อนที่จะถูกส่งถึงอุปกรณ์
วิธีใช้งาน
สร้าง Service Extension ใหม่
ข้อควรระวัง:
Bundle Identifier
ของ Service Extension ต้องไม่ซ้ำกับ Main TargetBundle Identifier
ของ Service Extension ต้องอยู่ใน namespace ของ Main Target เช่น:- Main Target:
io.mtpush.xxx
- Service Extension:
io.mtpush.xxx.yyy
- Main Target:
หลังจากสร้างแล้ว จะมี class พร้อม method หลัก 2 ตัว:
- didReceiveNotificationRequest:withContentHandler:
- serviceExtensionTimeWillExpire
- ใช้ method แรกเพื่อแก้ไขเนื้อหาการแจ้งเตือนก่อนส่งให้ผู้ใช้
- ถ้าใช้เวลานานเกินไป ระบบจะแสดงข้อความต้นฉบับแทน
- method ที่สองจะถูกเรียกก่อนหมดเวลา เพื่อทำงานเร่งด่วนกับ notification
iOS 9 Integration
การเปลี่ยนแปลงที่มีผลกับ SDK:
- เพิ่มการรองรับ bitCode
- ค่าเริ่มต้นเปลี่ยนเป็น HTTPS (ต้องตั้งค่า Info.plist หากใช้ HTTP)
วิธีแก้ปัญหา bitCode
- ใช้ MTPush iOS SDK v1.8.7 หรือใหม่กว่า
วิธีแก้ปัญหา HTTPS
- ตั้งค่า
NSAppTransportSecurity
ใน Info.plist - เพิ่ม
NSAllowsArbitraryLoads = YES
iOS 9 UIUserNotificationActionBehaviorTextInput
เพิ่มการ ตอบกลับด้วยข้อความ (Text Input) ผ่านการแจ้งเตือน
- ใช้
UIUserNotificationActionBehaviorTextInput
- รองรับการรับ input ของผู้ใช้และส่งกลับไปที่แอป
ตัวอย่างโค้ด client และ server → [ตามต้นฉบับ]
iOS 8 UILocalNotification
เพิ่ม parameter ใหม่ 3 ตัว: region
, regionTriggersOnce
, และ category
- ใช้ geofence trigger
- ตั้งค่าการแจ้งเตือนครั้งเดียวหรือหลายครั้ง
- รองรับ categories
iOS 8 UIUserNotificationSettings
เปลี่ยนการลงทะเบียน push โดยเพิ่ม category เพื่อให้ผู้ใช้ตอบสนองการแจ้งเตือนผ่านปุ่ม (Action Button)
iOS 7 Background Remote Notification
iOS 7 เพิ่มความสามารถ Background Remote Notification → แอปรันโค้ดเบื้องหลังได้เมื่อได้รับการแจ้งเตือน
- ใช้
content-available:1
เพื่อทำ Silent Push (อัปเดต content โดยไม่รบกวนผู้ใช้) - มีข้อจำกัดเรื่องความถี่และเวลา runtime
👉 เอกสารนี้เป็นการสรุปฟีเจอร์การแจ้งเตือน (Push Notification) ของ iOS ตั้งแต่ iOS 7 - iOS 14 สำหรับนักพัฒนา