应用未运行时,iOS本地通知和日历事件未出现

时间:2018-12-19 02:29:36

标签: ios objective-c xcode push-notification localnotification

我们想在项目中实现无提示推送,但是面临一个奇怪的问题!

首先,有一个演示项目,并且在我的程序环境中运行良好, 但是当我将相同的代码应用于其他项目后,当应用程序与xcode /在后台断开连接时,在AppDelegate中接收到无提示推送通知(这很神奇)后,本地通知不会出现,并且有关于日历的计划B,但与因此,我不知道要解决什么,有什么建议吗?

1。静默推送通知和本地通知演示项目

 * xcode 10.1, deployment target iOS 10.0

 * objective-c 
 * reference tutorial: https://medium.com/@mikru168/ios-%E6%9C%AC%E5%9C%B0%E9%80%9A%E7%9F%A5-local-notification-b25229f279ec

------->很有魅力。收到静默推送通知后,将显示本地通知。

2。我的项目+“ 1。”(以上代码)

* xcode 10.1, iOS 9.0
* objective-c mix swift 4.0

------->调试(与xcode连接)时,前台和后台的while应用程序都可以正常工作。

------->(与xcode断开连接)本地通知在应用程序在后台运行或终止时不会出现,但在前台运行良好。

3。我的项目+日历活动

------->调试(与xcode连接)时,前台和后台的while应用程序都可以正常工作。

------->(与xcode断开连接)日历通知在应用程序在后台运行或终止时不会出现,但在前台运行良好。

2 个答案:

答案 0 :(得分:0)

我尝试了给定的演示,我只是添加了一些新方法和代码。 当应用程序与Xcode断开连接时,它对我有用。

请尝试将以下方法添加到您的项目中并进行测试。

首先,请检查项目中是否启用了以下服务

  1. 背景模式>远程通知
  2. 推送通知

enter image description here

enter image description here

第二,我在 didFinishLaunchingWithOptions

中添加了此方法
application.registerForRemoteNotifications()

此外,在appdelegate类中添加了以下方法

func application(_ application: UIApplication,
                 didReceiveRemoteNotification userInfo: [AnyHashable : Any],
                 fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void)
{
     self.addLocalNotification()
    completionHandler(.newData)
}
func addLocalNotification(){
    let content = UNMutableNotificationContent()
    content.title = "title:Test"
    content.subtitle = "subtitle:No---"
    content.body = "body:Silent Notification"
    content.badge = 1
    content.sound = UNNotificationSound.default()

    // 設置通知的圖片
    let imageURL = Bundle.main.url(forResource: "apple", withExtension: "png")
    let attachment = try! UNNotificationAttachment(identifier: "", url: imageURL!, options: nil)
    content.attachments = [attachment]

    // 設置點擊通知後取得的資訊
    content.userInfo = ["link" : "https://www.facebook.com/franksIosApp/"]

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

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

    UNUserNotificationCenter.current().add(request, withCompletionHandler: {error in
        print("成功建立通知...")
    })
}

答案 1 :(得分:0)

我想与像我这样坚持下去的人分享, 这是Apple的疑难解答,对您很有帮助: https://developer.apple.com/library/archive/technotes/tn2265/_index.html

我最后的解决方法是触发时间超过60秒。