为本地通知添加振动背景

Add vibration the background for local notifications

我正在向我的应用添加视频聊天功能,并在应用处于后台时使用 PushKit 获取推送通知。我无法将 CallKit 用于视频,因为它弄乱了我正在使用的 SDK,因此我添加了一个从 PushKit 委托方法触发的本地推送通知。

我想知道 Whatsapp 如何通过他们的视频通话做到这一点。现在他们正在显示推送通知,但以我无法识别的方式。推送通过两次振动启动,两秒后有一个新的推送与第一个通知重叠,您可以感觉到另外两次振动,依此类推,直到您回答。他们是怎么做的,因为你不能一遍又一遍地添加振动,他们如何删除通知并在后台建立一个新的通知,因为 NSTimer 在后台不工作。如果我添加 [[UIApplication sharedApplication] beginBackgroundTaskWithName:expirationHandler:] 然后我可以使用计时器 180 秒但前提是应用程序处于活动状态。

所以真正的问题是如何添加一个可以重复几次并添加振动的本地通知?

您可以在以后创建一个通知,当它被调用时取消所有之前的通知并重新安排,直到您满意为止。

  UILocalNotification* localNotification = [[UILocalNotification alloc] init];
                        localNotification.alertBody = body;
                        localNotification.timeZone = [NSTimeZone defaultTimeZone];
                        localNotification.fireDate = [NSDate new]; //<-Set the date here in 10seconds for example
 [[UIApplication sharedApplication] scheduleLocalNotification:localNotification];

然后在应用中didReceiveLocalNotification:(UILocalNotification *)notification:

- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification {
    application cancelAllLocalNotifications;
}

对于 iOS 10 及更高版本。 使用 UNUserNotificationCenter:

let notificationContent = UNMutableNotificationContent()

// this sets sound + vibration
notificationContent.sound = UNNotificationSound.default

let trigger = UNTimeIntervalNotificationTrigger(
  timeInterval: 1,
  repeats: false
)

let request = UNNotificationRequest(
  identifier: "notification_identifier",
  content: notificationContent,
  trigger: trigger
)

UNUserNotificationCenter.current().add(request) { _ in }