2015-01-05 73 views
0
-(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 here

+0

你的代碼應該總是調用'completionHandler',所以你應該移動'completionHandler(UIBackgroundFetchResultNewData );'兩個if語句之外。您可以選擇根據您收到的消息以及是否有新數據更改您傳遞給completionHandler的值 – Paulw11

+0

感謝Paulw11的回覆,但是當我在後臺收到推送通知時,它必須打印NSLog(@ 「PUSH NOTIFICATION%@」,userInfo);此日誌在控制檯上,但它不打印任何日誌。 – Harry

+0

有沒有人知道我的問題的原因?請幫助我。 – Harry

回答

0

我做幾乎同樣的事情,你除了我用無聲推送通知提出一個本地通知時,應用程序在後臺運行,並用它來更新一些狀態當應用程序在前臺。我不註冊後臺提取,只有「遠程通知」。

@ Paulw11是正確的,您需要每次調用didReceiveRemoteNotification時調用completionHandler。

我會檢查你的plist以確保你的背景模式配置正確。也許你可以發佈你的plist的內容。

我的通知有效載荷看起來和你的完全一樣,所以我不認爲這是問題所在。我最初有問題,因爲有效載荷不完全正確。

請記住,如果你殺了應用程序(將它刷掉),那麼在應用程序重新啓動之前,您將不會收到沉默推送通知。

+0

感謝tmorg,在你的回答之後,我更新了我的問題,並對其進行了相應的更改,但我認爲當應用程序收到任何推送通知時,nslog的第一行應該在控制檯上打印。 – Harry

+0

@哈利試試這個測試。總是返回UIBackgroundFetchResultNewData。除了寫入日誌之外,還可以嘗試呈現本地通知。我知道這是有效的。 – tmrog

0

我認爲你需要用「內容提供」外部「APS」一次測試,如下所示:

aps = { 
      alert = "This is test alert"; 
      badge = 1; 
     }; 
"content-available" = 1; 
相關問題