iOS 12: تجميع الإشعارات

هذه المقالة ، مثل المقالة السابقة ، مخصصة للتغييرات في الإشعارات التي ظهرت في 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 سبتمبر.


أتمنى لك أسبوعًا لطيفًا! ^ _ ^

Source: https://habr.com/ru/post/ar416439/


All Articles