0

我已经在一个应用程序中实现了 iBeacon,以便它可以将应用程序从暂停或终止状态短暂唤醒。发送推送通知,提示用户如果愿意打开应用程序。

问题是,当用户退出然后再次进入一个区域时,会发送另一个通知。例如,在购物中心,用户可以走过许多信标(进入和退出区域)。他们可能不想要的是很多让他们烦恼的通知。

有没有一种方法可以控制或限制用户收到的通知数量?例如时间限制?一旦收到通知,那么用户在 15 分钟或 30 分钟等内不会收到另一个通知?

必须有一个解决方案,因为我确信 Apple 不希望用户收到很多用户不想要的通知。

4

1 回答 1

0

iOS SDK 没有内置工具来防止在特定时间段内发送多个通知。但你说得对,这是一个非常普遍的问题。解决方案是添加一点编程逻辑。

这是一个典型的方法:

  1. 每次发送通知时,记录下发送时间的时间戳。将其存储在手机的持久存储中,因此即使用户重新启动应用程序或重新启动手机,您也会记录最后一次发送通知的时间。

    UserDefaults.standard.set(Date().timeIntervalSince1970, 
                              forKey: "lastNotificationSentTime")
    
  2. 在发送通知之前,请检查您上次发送通知的时间。如果它太新,请禁止发送新通知。

    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
    }
    
于 2020-03-09T17:45:10.740 回答