zoukankan      html  css  js  c++  java
  • IOS 在不打开电话服务的时候,可以响应服务器的推送消息,从而接收服务器的推送消息

      • 在做即时通讯(基于xmpp框架)的时候遇到这样一个问题,就是在真机测试的时候,你按Home键返回桌面,在你返回桌面的时候,这是你的程序的挂起状态的,在你挂起的时候,
      • 相当于你的程序是死的,程序的所有进程全部是睡眠状态,所有这时候你做任何操作,都是无用的,手机永远也接收不到你的任何消息推送,因为在这里,手机处于休眠状态,这时候你必须要把他唤醒,才能正常的接收你所推送过来的消息,当时我的应用是打开了电话服务,因为电话服务永远都是让手机保持唤醒状态,所有在你手机处于任何状态的时候,都可以接到电话的,所有这就是电话服务。我当时用的就是这样的一个服务,使我的程序不被睡眠,当我上架AppStore的时候,被苹果拒绝了,所有绞尽脑汁想到了一个解决方法.如图是添加的电话服务,在我添加这样的服务时候,苹果商店不让上架AppStore的。所以我想了别的办法

      • 如图是解决的办法:
      • 在AppDelegate中。添加上这么一段代码即可。
     1 - (void)applicationDidEnterBackground:(UIApplication *)application
     2 {
     3     [[UIApplication sharedApplication]setApplicationIconBadgeNumber:0];//进入前台取消应用消息图标
     4     
     5     
     6     UIApplication*   app = [UIApplication sharedApplication];
     7     
     8     __block    UIBackgroundTaskIdentifier bgTask;
     9     
    10     bgTask = [app beginBackgroundTaskWithExpirationHandler:^{
    11         
    12         dispatch_async(dispatch_get_main_queue(), ^{
    13             
    14             if (bgTask != UIBackgroundTaskInvalid)
    15                 
    16             {
    17                 
    18                 bgTask = UIBackgroundTaskInvalid;
    19                 
    20             }
    21             
    22         });
    23         
    24     }];
    25     
    26     dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
    27         
    28         dispatch_async(dispatch_get_main_queue(), ^{
    29             
    30             if (bgTask != UIBackgroundTaskInvalid)
    31                 
    32             {
    33                 
    34                 bgTask = UIBackgroundTaskInvalid;
    35                 
    36             }
    37             
    38         });
    39         
    40     });
    41 
    42 }

    好了,这就是我的解决办法,不用系统的电话服务照样可以唤醒程序不被睡眠,导致后台推送不过来消息。。

    谢谢大家,我们以后可以多多学习,多多进步。。

    PS:不知道别的办法是什么,有别的办法的可以给我留言,我们一同探讨。。

  • 相关阅读:
    49. 字母异位词分组
    73. 矩阵置零
    Razor语法问题(foreach里面嵌套if)
    多线程问题
    Get json formatted string from web by sending HttpWebRequest and then deserialize it to get needed data
    How to execute tons of tasks parallelly with TPL method?
    How to sort the dictionary by the value field
    How to customize the console applicaton
    What is the difference for delete/truncate/drop
    How to call C/C++ sytle function from C# solution?
  • 原文地址:https://www.cnblogs.com/Wild-orangutans/p/4243914.html
Copyright © 2011-2022 走看看