هذه المقالة ، مثل المقالة السابقة ، مخصصة للتغييرات في الإشعارات التي ظهرت في iOS 12.
في المقالة الأخيرة التي تحدثت فيها عن الابتكارات العامة ، سأتحدث هذه المرة عن تجميع الإخطارات بمزيد من التفصيل.
التجميع في iOS 12
لكي يتم تجميع الإشعارات الواردة من تطبيقك في iOS 12 ، لا تحتاج إلى القيام بأي شيء ، سيتم تنفيذ التجميع تلقائيًا. ستبدأ الإشعارات على الشاشة في التكديس عندما يصل رقمها إلى 5.
لدى المستخدم الفرصة للتأثير على التجميع من خلال إعدادات النظام.
- تلقائي (افتراضي) - يتحكم التطبيق في إعدادات التجميع.
- بواسطة التطبيق - يتم تجاهل إعدادات التطبيق ، تتم إضافة جميع الإخطارات من التطبيق إلى مكدس واحد.
- إيقاف - تم تجاهل إعدادات التطبيق ، وتم تعطيل تجميع الإشعارات.
إعداد التجميع
لا يمكننا التأثير على تجميع الرسائل إلا إذا تم استخدام العلامة التلقائية في الإعدادات. للقيام بذلك ، يجب أن يحدد الإعلام معلمة معرف مؤشر الترابط . نقوم أيضًا بتمرير معرف سلسلة الرسائل إلى إشعار الترجمة من أجل الوضوح:
let content = UNMutableNotificationContent() content.threadIdentifier = threadId content.subtitle = "Thread ID: \(threadId)"
نرسل عدة رسائل ونرى نتيجة التجميع:
يمكنك أيضًا تمرير معرف سلسلة الرسائل لدفع الإخطارات:
{ "aps" : { "alert" : { "title" : "Cat Title" "body" : "Cat Body" } "thread-id" : "all-cats" } }
عند تحديد معرّف الإشعار ، لا تنسَ تحديده في UNNotificationCategory ، وإلا فلن تتم معالجته في ملحق الإشعارات:
UNNotificationCategory(identifier: "Cat-Category", actions: actions, intentIdentifiers: ["all-cats", "3-star-cats"], options: [])
بالنسبة للفئة ، يمكنك تحديد تنسيق الرسالة التي سيتم عرضها من قبل المستخدم على الجهاز ، وهذا أحد ابتكارات iOS 12. يمكنك القيام بذلك فقط عند تهيئة الفئة:
UNNotificationCategory(identifier: "category-simple", actions: actions, intentIdentifiers: ["all-cats", "3-star-cats"], hiddenPreviewsBodyPlaceholder: nil, categorySummaryFormat: "%u %@", options: [])
المعلمة ٪ u مسؤولة عن عدد الرسائل في المجموعة ؛ ويمكن تعديلها باستخدام وسيطة تلخيصArgumentCount . على سبيل المثال ، قمت بنشر مجموعة جديدة من القطط ، فيها 10 صور جديدة. ليس من المنطقي إرسال 10 مسدسات إلى المستخدم ، يمكنك إرسال رسالة واحدة مع عداد يساوي 10. تعرض المعلمة ٪ @ قيمة ملخص المتغير على الشاشة:
let content = UNMutableNotificationContent() content.summaryArgumentCount = 10 content.summaryArgument = " "
لدينا في كل مجموعة 3 رسائل ، ولكن نظرًا لأن معلمة تلخيصArgumentCount محددة ، يتم عرض عدد الرسائل يساوي 20. وتسمح لنا تلخيصArgument بإضافة اسم الفئة التي تنتمي إليها الإشعارات. ليس سيئًا ، ولكن لدينا الآن مشكلة توطين.
التعريب
لتنفيذ مهمة الترجمة ، أضف ملف Stringdict إلى المشروع.
قم بتغيير مفتاح السلسلة المترجمة إلى NOTIFICATION_SUMMARY ، وإلا فلن تتم معالجة القيم من القاموس ، على الرغم من حقيقة أنه عند تلقي سلسلة مترجمة ، يتم تمرير مفتاح باسم القاموس كمعلمة. تظهر القيم المتبقية في الشكل:
في ملف المفتش للقاموس ، حدد Localize .
نحدد ملفات للترجمة.
نذهب إلى إعدادات المشروع وإضافة اللغة لترجمة الروسية (رو) .
يمكن حذف الملفات الزائدة من المشروع.
في الكود ، نحصل على السلسلة المترجمة ونمررها كمعامل categorySummaryFormat :
let summary = NSString.localizedUserNotificationString(forKey: "NOTIFICATION_SUMMARY", arguments: nil) let category = UNNotificationCategory(identifier: "Cat-Category", actions: actions, intentIdentifiers: ["all-cats", "3-star-cats"], hiddenPreviewsBodyPlaceholder: nil, categorySummaryFormat: summary, options: [])
ونتيجة لذلك ، نحصل على توطين ممتاز للتطبيق.
تم تحديث المشروع الذي تم إنشاؤه لآخر مقالة ، ويمكن العثور على الكود على جيثب . تم تخصيص تقريرين في WWDC لتنفيذ الإخطارات: ما الجديد في إخطارات المستخدم واستخدام الإعلامات المجمعة . سنكون قادرين على مناقشة الابتكارات في MBLT DEV 2018 في موسكو في 28 سبتمبر.
أتمنى لك أسبوعًا لطيفًا! ^ _ ^