我正在测试裸骨应用上的推送通知。目前,它所做的只是接收推送通知而不做任何其他事情。
当我尝试在print()
函数中application(_:didFinishLaunchingWithOptions:)
输出信息时,它拒绝打印任何内容。
我的代码:
class AppDelegate: UIResponder, UIApplicationDelegate {
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
print("TEST TEST TEST")
registerForPushNotifications(application)
print("TEST TEST TEST")
if let notification = launchOptions?[UIApplicationLaunchOptionsRemoteNotificationKey] as? [String: AnyObject] {
print(notification)
let aps = notification["aps"] as! [String: AnyObject]
print(aps)
}
return true
}
func registerForPushNotifications(application: UIApplication) {
let notificationSettings = UIUserNotificationSettings(forTypes: [.Badge, .Sound, .Alert], categories: nil)
application.registerUserNotificationSettings(notificationSettings)
}
}
该功能中的所有打印行都不会向控制台打印任何内容。我已经确认他们被使用断点击中了。为什么没有印刷?
我能够找到一个使用警报的解决方法,这些工作很棒并且提供了我需要的所有信息,但它无法回答为什么控制台中没有打印任何内容。
解决方法代码:
class AppDelegate: UIResponder, UIApplicationDelegate {
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
UIAlertView(title: "Remote Notif", message: "\(launchOptions)", delegate: nil, cancelButtonTitle: "OK").show()
registerForPushNotifications(application)
if let notification = launchOptions?[UIApplicationLaunchOptionsRemoteNotificationKey] as? [String: AnyObject] {
UIAlertView(title: "Remote Notif", message: "\(notification)", delegate: nil, cancelButtonTitle: "OK").show()
let aps = notification["aps"] as! [String: AnyObject]
UIAlertView(title: "Remote Notif", message: "\(aps)", delegate: nil, cancelButtonTitle: "OK").show()
}
return true
}
func registerForPushNotifications(application: UIApplication) {
let notificationSettings = UIUserNotificationSettings(forTypes: [.Badge, .Sound, .Alert], categories: nil)
application.registerUserNotificationSettings(notificationSettings)
}
}
我知道UIAlertView已被弃用,但它现在仍然可以正常工作。
一些额外信息:
它正在设备上运行
运行方案已设置为等待启动可执行文件(例如,用户按下推送通知)
我的.plist中的主故事板文件基本名称是“Main”
经过进一步测试后,似乎只有在我的启动方案设置为Wait for executable to be launched
时才会发生,如果设置为Automatically
启动,它将打印出行。我唯一能想到的是,当从推送通知中唤醒时,控制台可能没有被启动。所以它可能是Xcode的一个错误。
答案 0 :(得分:6)
我发现让Wait for application to be launched
导致Xcode调试控制台无法启动应用程序。我不知道这是打算还是Xcode错误。尝试在您的方案中选择Launch automatically
,您的调试控制台应该重新打开。更改方案后,您可能还需要重新启动xCode。