iOS Swift:静默通知后创建本地通知

6
我将发送一个静默推送通知给我的应用程序,然后处理推送通知的内容,在决定是否向用户发送本地通知之前。但是,在接收到静默通知后,我无法从应用程序触发本地通知。
以下是我在AppDelegate中触发静默通知后的代码:
func application(application: UIApplication,
    didReceiveRemoteNotification userInfo: [NSObject : AnyObject],
    fetchCompletionHandler handler: (UIBackgroundFetchResult) -> Void) {
        println("Did receive remote with completion handler")

        var localNotification:UILocalNotification = UILocalNotification()
        localNotification.alertAction = "view broadcast messages"
        localNotification.alertBody = "Hello"
        localNotification.fireDate = NSDate(timeIntervalSinceNow: 0)

        localNotification.soundName = UILocalNotificationDefaultSoundName;

        application.scheduleLocalNotification(localNotification)

        handler(UIBackgroundFetchResult.NewData)
}

然而,本地通知从未触发。
我已经启用了位置更新、后台获取和远程通知的功能。
另外,当我的应用处于后台状态时,它会监听位置更新,然后在特定情况下通过本地通知提醒用户-这个功能是从类似代码中实现的。
那么为什么本地通知没有从didReceiveRemoteNotification触发呢?
谢谢。
1个回答

7

Ok I figured it out,

application.scheduleLocalNotification(localNotification)

应该已经。
UIApplication.sharedApplication().scheduleLocalNotification(localNotification)

希望这能帮到某些人!

1
你好,如果你的应用程序被杀死,你将无法接收到远程通知。当你的应用程序被杀死时,你需要使用VoIP通知。不幸的是,苹果只允许你在特定情况下使用VoIP通知。 - Gmeister4
1
https://developer.apple.com/library/content/documentation/Performance/Conceptual/EnergyGuide-iOS/OptimizeVoIP.html - Gmeister4
@IsPha在收到静默推送后启动后台任务,然后触发本地通知会对你有帮助。 - Raja Saad
@RajaSaad,是的,我无法调用这个的详细信息,因为那是很久以前的事了。但是我相信,如果你想在收到推送时执行某些操作,那么可以通过开发者门户网站上的VoIP推送类型来触发自己的本地推送。这允许接收静默推送。此外,我认为可以通过对有效负载进行一些修改来接收普通推送通知而不会弹出警报。如果你想一起探讨这个问题,请告诉我,希望我能帮到你! - IsPha
使用VOIP PSUH时,您还需要启用Callkit。 - Raja Saad
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接