安排本地通知(静默)以在后台+ Swift iOS中执行自定义任务

时间:2018-07-25 09:05:48

标签: ios swift uilocalnotification unusernotificationcenter silent-notification

在我们的应用程序中,用户将在开始工作时签到。如果用户忘记了上班时间,我们将不得不在上班时间24小时后自动将他下班。该应用可能长时间未处于活动/后台状态。它可能会终止。因此,我们的想法是发布一个本地通知,通过该通知将在后台执行代码以将其退出。此通知必须是静默通知。但是我们从研究中了解到,本地通知不能保持沉默。那么,还有其他方法可以实现这一目标吗?还是我们可以安排一个无声的本地通知?

class func generateLocalNotificationWith(timeInterval : TimeInterval, title : String, message : String, mobileTimeClockId: Int)
{    
    UNUserNotificationCenter.current().removeAllPendingNotificationRequests()
    let content = UNMutableNotificationContent()

    //adding title, subtitle, body and badge
    content.title = title
    content.body = message

    let userInfoDictionary = ["badge":"0","content-available": "1"]

    let dict = ["aps": userInfoDictionary, "MobileTimeClockId": mobileTimeClockId] as [String : Any]

    content.userInfo = dict

    //getting the notification trigger
    let trigger = UNTimeIntervalNotificationTrigger(timeInterval: timeInterval, repeats: false)

    //getting the notification request
    let request = UNNotificationRequest(identifier: "SimplifiedIOSNotification", content: content, trigger: trigger)

    //adding the notification to notification center
    UNUserNotificationCenter.current().add(request, withCompletionHandler: nil)
}

1 个答案:

答案 0 :(得分:0)

如果您希望通知保持沉默并进行后台工作,则必须为推送通知。没有用户交互,本地通知无法唤醒您的应用。

执行所需操作的最佳方法是在用户实际离开工作场所时使用“核心位置”区域监视来唤醒您的应用程序。区域监视可以在后台静默唤醒您的应用,并让您完成一些工作。问题在于,不能100%保证会触发它,并且用户需要接受后台位置权限。