swift中的静音推送通知的最佳解决方案(偶数强制关闭)

时间:2015-11-10 14:22:04

标签: ios push-notification google-cloud-messaging pushkit

在问这个问题之前,我已经研究了很多 我使用 GCM [Google云端消息传递] 进行推送通知

这是我从GCM发送的消息

{
"to" : "....",
"notification": {
"sound": "default",
"badge": "1",
"title": "A Message Received",
"body": "Please open messages",
},
"content_available":true,
"priority": "high",
"data":{
"message":"heey"
}
}

正如我从其他网站上读到的那样,它告诉您是否需要在标题中输入content_available的无声通知,并且它可以正常工作。
一切都很好并使用这种方法。
但唯一的问题是应用程序被用户强制关闭。它无法处理

中的代码
func application( application: UIApplication,
    didReceiveRemoteNotification userInfo: [NSObject : AnyObject],
    fetchCompletionHandler handler: (UIBackgroundFetchResult) -> Void) {
}

在另一个有答案的问题中说没有解决方法。除了IOS 8中的pushkit。

有人告诉这个链接可以帮助: https://zeropush.com/guide/guide-to-pushkit-and-voip
但我无法使用它。有些步骤不明确。

我的请求是,如果有人知道PushKit框架的最佳解决方案或一段代码或任何可以帮助我的东西。

1 个答案:

答案 0 :(得分:0)

方法:

func application( application: UIApplication,
     didReceiveRemoteNotification userInfo: [NSObject : AnyObject],
            fetchCompletionHandler handler: (UIBackgroundFetchResult) -> Void) {
}
如果应用已暂停且在后台,则

有效。适用于iOS 7及更高版本的方法。 当应用未运行时,会调用didFinishLaunchingWithOptions。您可以在此方法中执行以下操作:

 UILocalNotification *notification = [launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey];
if (notification) {
    NSLog(@"app recieved notification from remote%@",notification);
    [self application:application didReceiveRemoteNotification(NSDictionary*)notification];
}else{
    NSLog(@"app did not recieve notification");
}

在此处找到:Detect if the app was launched/opened from a push notification

对于iOS 8 PushKit中的VoIP推送,首先需要创建证书。这个例子帮助我查看了它:https://www.sinch.com/tutorials/ios8-apps-and-pushkit/ 它非常直接。