【问题标题】:Managing local notifications for iOS framework with beacons使用信标管理 iOS 框架的本地通知
【发布时间】:2016-11-14 17:06:20
【问题描述】:

我一直在研究包含信标功能的 iOS 框架(在 Swift 中)。我让它工作了,只是我不确定如何处理我在前台并且在短时间内遇到多个信标的情况。

如果我希望didReceive 委托方法在前台显示信标警报,并且如果我遇到许多信标,它将无法正常工作(警报将一个接一个地显示)。有没有办法以某种方式排队通知?

另外我想知道,是否有办法让所有逻辑在我的框架内接收本地通知? 我必须能够支持 iOS-8.0,所以我不能使用 iOS-10.0 提供的通知中心

我可以创建一些类似appdelegate 的类(可能是一些在框架内实现 UIApplicationDelegate 的类),这样可能吗?

我想在框架本身中放入尽可能多的代码,这样就不会让某人在包含所有功能的框架中变得过于混乱。

【问题讨论】:

    标签: ios swift notifications frameworks beacon


    【解决方案1】:

    一段时间后,我想出了一个方法来制作这个。我是 iOS 的初学者,有几个月的经验,所以我不能说这个解决方案是否是最好的,但它对我有用。

    我找到了一种从框架中实现所有推送和本地通知相关委托方法的方法。基本上,如果主应用程序希望框架处理通知而不必自己实现任何东西,那么运行时框架将为 AppDelegate.swift 类(或您的 AppDelegate 类调用的任何东西)动态实现某些 UIApplicationDelegate 方法。

    我使用 object_getClass(UIApplication.shared.delegate!) 来获取主类。

    然后我使用了 func class_addMethod(_ cls: AnyClass!, _ name: Selector!, _ imp: IMP!, _ types: UnsafePointer!) -> Bool 为了从框架内部实现推送和本地通知的委托方法,所以现在只需要编写一两行代码就可以完全使用框架与工作通知和信标位置服务,而不必在框架外部编写大量代码。

    至于在前台模式下处理通知,我通过将它们添加到队列中来完成这项工作,这样如果有多个通知出现,并且想要在前台显示,UIAlertController 只会显示一个,其余的将被放置在队列中并再次发送,但有一些小的延迟(我将触发日期设置为我认为适合我的情况的某个值)在用户对第一个通知进行操作后,这是唯一一个呈现的通知。

    这些只是我对我遇到的问题的想法,如果有人对这些解决方案表现出兴趣,我会在需要时写更多细节。我也很乐意接受任何批评。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-04-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-05
      • 1970-01-01
      相关资源
      最近更新 更多