在问这个问题之前,我已经研究了很多
我使用 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框架的最佳解决方案或一段代码或任何可以帮助我的东西。
答案 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/ 它非常直接。