我们想在项目中实现无提示推送,但是面临一个奇怪的问题!
首先,有一个演示项目,并且在我的程序环境中运行良好, 但是当我将相同的代码应用于其他项目后,当应用程序与xcode /在后台断开连接时,在AppDelegate中接收到无提示推送通知(这很神奇)后,本地通知不会出现,并且有关于日历的计划B,但与因此,我不知道要解决什么,有什么建议吗?
* 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
------->很有魅力。收到静默推送通知后,将显示本地通知。
* xcode 10.1, iOS 9.0
* objective-c mix swift 4.0
------->调试(与xcode连接)时,前台和后台的while应用程序都可以正常工作。
------->(与xcode断开连接)本地通知在应用程序在后台运行或终止时不会出现,但在前台运行良好。
------->调试(与xcode连接)时,前台和后台的while应用程序都可以正常工作。
------->(与xcode断开连接)日历通知在应用程序在后台运行或终止时不会出现,但在前台运行良好。
答案 0 :(得分:0)
我尝试了给定的演示,我只是添加了一些新方法和代码。 当应用程序与Xcode断开连接时,它对我有用。
请尝试将以下方法添加到您的项目中并进行测试。
首先,请检查项目中是否启用了以下服务
第二,我在 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秒。