2016-10-03 23 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,您將無法接收或處理該內容。 –