我已将iBeacon实施到应用程序中,以便它将应用程序短暂地从暂停或终止状态唤醒。发送推送通知,如果用户愿意,它将提示用户打开应用程序。
问题是,当用户退出然后再次进入区域时,将发送另一个通知。例如,在购物中心中,用户可以走过许多信标(进入和离开区域)。他们可能不想要的是很多使他们烦恼的通知。
您是否可以控制或限制用户收到的通知数量?例如时间限制?收到通知后,用户将在15分钟或30分钟等时间内不会收到另一个通知?
必须有一种解决方案,因为我确定Apple不会希望用户收到用户不希望的大量通知。
[iOS SDK没有内置工具可防止在特定时间段内发送多个通知。但是您是正确的,这是一个非常普遍的问题。解决方案是只添加一点编程逻辑。
这是典型的方法:
每次发送通知时,记录发送通知的时间戳。将此存储在手机的持久存储中,因此,即使用户重新启动应用程序或重新启动手机,您也会记录上次发送通知的时间。
UserDefaults.standard.set(Date().timeIntervalSince1970,
forKey: "lastNotificationSentTime")
发送通知之前,请检查上次发送通知的时间。如果时间太短,请禁止发送新的通知。
let lastNotificationTime = UserDefaults.standard.value(forKey: "last") as? Double ?? 0.0
if Date().timeIntervalSince1970 - lastNotificationTime < 60.0 {
print("Not sending notification because I just sent one in the last 60 seconds.")
}
else {
// TODO: Send notification here
}