2016-10-03 19 views
3

我试图从用户隐藏某些指定的推送通知,以便它对用户不可见。 我在哪里可以写入隐藏通知的条件,以便它不会显示在通知纸盘中。 我试过AppDelgate,但没有奏效。有没有其他办法可以做到这一点?针对特定有效负载的某些通知的无提示推送通知

func application(applxication: UIApplication, didReceiveLocalNotification notification: UILocalNotification) 
    { 
     UIApplication.sharedApplication().cancelLocalNotification(<#T##notification: UILocalNotification##UILocalNotification#>) 
     //println("Local Notification Received:\(notification)") 
    } 

如果你能帮我在这里,这将是很大的帮助。

+0

我也在寻找隐藏收到推送通知。任何人都知道如何处理? – bably

回答

1

我试过这个远程通知,而不是本地通知。 因此,根据苹果WWDC 2013,如果您在工作负荷中通过content-available" : 1,那么它将作为静默推送通知。

因此,只需在您的有效负载中包含content-available" : 1即可获得无声通知。

在应用程序的 Info.plist

也应该有在这里UIBackgroundModes set to remote-notification 更多信息For Silent push notification

{ 
    aps = { 
     "content-available" : 1, 
     sound : "" 
    }; 
} 

希望它可以帮助...

编码愉快。

+0

谢谢@janmenjaya ...即使我的“可用内容”为“0”,是否有办法从应用程序端处理此问题? –

+0

您可以检查委托中的“可用内容”,以了解哪些是静默通知,哪些不是。我想你是这样问的 – Janmenjaya

+0

像这样:if([[[userInfo objectForKey:@“aps”] objectForKey:@“content-available”] isEqualToNumber:[NSNumber numberWithInt:1]]){ } – Janmenjaya

1

设置

内容可用”:1

和除去

提醒

from payload。

这会给你想要的结果。

当您的应用收到此类推,它会调用下面的方法:

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler 
+0

谢谢,有没有其他方式通过应用程序来处理它,而“内容可用”是“ 0" ? –

+0

是的,你可以。但它仅限于运行和后台模式。如果在您的应用处于离线状态时将可用内容设置为0,您将无法接收或处理该内容。 –