2016-11-14 1 views
2

Я работаю над фреймворком iOS (в Swift), который содержит функции маяка. Я сделал это за исключением того, что я не уверен, как обрабатывать сценарий, где я нахожусь на переднем плане, и я встречаюсь с несколькими маяками в короткий срок.Управление локальными уведомлениями для платформы iOS с маяками

Если я хочу didReceive метод делегата, чтобы показать предупреждение для маяка на переднем плане, и если я встречу много маяков, он не будет работать хорошо (предупреждения будут отображаться один над другим). Есть ли какое-то решение для уведомлений о очереди?

Также я хотел бы знать, есть ли способ сделать всю эту логику для получения локальных уведомлений внутри моей структуры? я должен быть в состоянии поддерживать IOS версии 8.0, так что я не могу использовать Notification Center, который доступен с прошивкой-10,0

Могу ли я создать некоторый класс, который будет действовать как appdelegate (вероятно, какой-то класс, который будет осуществлять UIApplicationDelegate в рамках), что-то вроде этого возможно?

Я хочу разместить столько же кода, сколько и внутри самого фреймворка, так что это не будет слишком грязная работа для того, чтобы кто-то включил эту инфраструктуру со всей функциональностью.

ответ

1

Через некоторое время я выяснил, как это сделать. Я новичок в iOS с несколькими месяцами опыта, поэтому не могу сказать, лучшее ли это решение, но оно работает для меня.

Я нашел способ реализовать все методы делегата, связанные с push и локальным уведомлением, из фреймворка. В основном, если основное приложение хочет, чтобы среда заботилась о уведомлениях без необходимости чего-либо реализовать самостоятельно, среда выполнения будет динамически реализовывать определенные методы UIApplicationDelegate для класса AppDelegate.swift (или что-то еще называется классом AppDelegate).

Я использовал object_getClass (UIApplication.shared.delegate!), Чтобы получить основной класс.

Тогда я использовал Func class_addMethod (_ ЦБС: AnyClass !, _ имя: Селектор !, _ имп: IMP !, _ типы: UnsafePointer!) -> Bool для реализации методов делегата для толчке и локальных уведомлений внутри рамок поэтому теперь приходится писать одну или две строки, чтобы использовать фреймворк полностью с рабочими уведомлениями и службами определения местоположения маяка вместо того, чтобы писать много кода вне рамки.

Что касается обработки уведомлений в режиме переднего плана, я сделал эту работу, добавив их в очередь, чтобы, если появилось несколько уведомлений и хочет быть отображено в режиме переднего плана, только один будет отображаться UIAlertController, а остальное будет поставить в очередь и отправить еще раз, но с небольшой задержкой (я установил дату огня, чтобы быть какой-то ценностью, которая, по моему мнению, была уместной в моем случае) после того, как пользователь совершит действие в отношении этого первого уведомления, которое было единственным.

Это только мои идеи в отношении проблем, которые у меня были, если кто-то проявляет интерес к этим решениям, я напишу дополнительную информацию, если это необходимо. Я также с радостью принимаю любую критику.