相當於你的程序是死的,程序的所有進程全部是睡眠狀態,所有這時候你做任何操作,都是無用的,手機永遠也接收不到你的任何消息推送,因為在這裡,手機處於休眠狀態,這時候你必須要把他喚醒,才能正常的接收你所推送過來的消息,當時我的應用是打開了電話服務,因為電話服務永遠都是讓手機保持喚醒狀態,所有在你手機處於任何狀態的時候,都可以接到電話的,所有這就是電話服務。我當時用的就是這樣的一個服務,使我的程序不被睡眠,當我上架AppStore的時候,被蘋果拒絕了,所有絞盡腦汁想到了一個解決方法.如圖是添加的電話服務,在我添加這樣的服務時候,蘋果商店不讓上架AppStore的。所以我想了別的辦法 - (void)applicationDidEnterBackground:(UIApplication *)application
{
[[UIApplication sharedApplication]setApplicationIconBadgeNumber:0];//進入前台取消應用消息圖標
UIApplication* app = [UIApplication sharedApplication];
__block UIBackgroundTaskIdentifier bgTask;
bgTask = [app beginBackgroundTaskWithExpirationHandler:^{
dispatch_async(dispatch_get_main_queue(), ^{
if (bgTask != UIBackgroundTaskInvalid)
{
bgTask = UIBackgroundTaskInvalid;
}
});
}];
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
dispatch_async(dispatch_get_main_queue(), ^{
if (bgTask != UIBackgroundTaskInvalid)
{
bgTask = UIBackgroundTaskInvalid;
}
});
});
}
好了,這就是我的解決辦法,不用系統的電話服務照樣可以喚醒程序不被睡眠,導致後台推送不過來消息。。
謝謝大家,我們以後可以多多學習,多多進步。。
PS:不知道別的辦法是什麼,有別的辦法的可以給我留言,我們一同探討。。