-(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler{
NSLog(@"PUSH NOTIFICATION %@",userInfo);
if([userInfo[@"aps"][@"content-available"] intValue] == 1){
NSLog(@"SILENT PUSH NOTIFICATION");
//Here I'm inserting a flag value to my DB.
completionHandler(UIBackgroundFetchResultNewData);
}
else{
NSLog(@" GENERAL PUSH NOTIFICATION ");
completionHandler(UIBackgroundFetchResultNoData);
}
}
My silent notification payload is {
aps = {
"content-available" = 1;
sound = "";
};
}
爲了支持我添加在info.plist中的一個關鍵的「所需的背景模式」執行當收到無聲推送通知和應用程式在後臺運行的幾行代碼,IOS
項0 =應用程序下載內容以響應推送通知
同樣在功能部分,我的背景模式處於打開狀態並且選中了遠程通知複選標記。
現在我的問題是當我運行我的應用程序,然後我能夠接收無聲以及一般推送通知和代碼在前景模式下成功執行,但當我按Home按鈕(不強制退出,設備的密碼鎖也打開)我的應用程序將進入後臺模式,然後我的代碼不會執行,即使我能夠接收推送通知,但它們都具有警報和聲音,但應用程序不會以後臺模式啓動。
我想爲前臺和後臺模式每當我的應用程序正在接收任何推送通知無所謂是無聲的或一般推送通知我的第一次登錄委託方法應該必須在控制檯上打印即NSLog (@「PUSH NOTIFICATION%@」,userInfo);
請幫我從這2-3天以來一直在努力。
我的info.plist
你的代碼應該總是調用'completionHandler',所以你應該移動'completionHandler(UIBackgroundFetchResultNewData );'兩個if語句之外。您可以選擇根據您收到的消息以及是否有新數據更改您傳遞給completionHandler的值 – Paulw11
感謝Paulw11的回覆,但是當我在後臺收到推送通知時,它必須打印NSLog(@ 「PUSH NOTIFICATION%@」,userInfo);此日誌在控制檯上,但它不打印任何日誌。 – Harry
有沒有人知道我的問題的原因?請幫助我。 – Harry