• 在做即时通讯(基于xmpp框架)的时候遇到这样一个问题,就是在真机测试的时候,你按Home键返回桌面,在你返回桌面的时候,这是你的程序的挂起状态的,在你挂起的时候,
    • 相当于你的程序是死的,程序的所有进程全部是睡眠状态,所有这时候你做任何操作,都是无用的,手机永远也接收不到你的任何消息推送,因为在这里,手机处于休眠状态,这时候你必须要把他唤醒,才能正常的接收你所推送过来的消息,当时我的应用是打开了电话服务,因为电话服务永远都是让手机保持唤醒状态,所有在你手机处于任何状态的时候,都可以接到电话的,所有这就是电话服务。我当时用的就是这样的一个服务,使我的程序不被睡眠,当我上架AppStore的时候,被苹果拒绝了,所有绞尽脑汁想到了一个解决方法.如图是添加的电话服务,在我添加这样的服务时候,苹果商店不让上架AppStore的。所以我想了别的办法
    • 如图是解决的办法:
    • 在AppDelegate中。添加上这么一段代码即可。
 - (void)applicationDidEnterBackground:(UIApplication *)application
{
[[UIApplication sharedApplication]setApplicationIconBadgeNumber:];//进入前台取消应用消息图标 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, ), ^{ dispatch_async(dispatch_get_main_queue(), ^{ if (bgTask != UIBackgroundTaskInvalid) { bgTask = UIBackgroundTaskInvalid; } }); }); }

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

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

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

IOS 在不打开电话服务的时候,可以响应服务器的推送消息,从而接收服务器的推送消息的更多相关文章

  1. iOS 从app跳转到Safari、从app打开电话呼叫

    1.从app跳转到Safari NSString* strIdentifier = @"http://www.ybyb.com"; BOOL isExsit = [[UIAppli ...

  2. iOS学习笔记30-系统服务(三)蓝牙

    一.蓝牙 随着蓝牙低功耗技术BLE(Bluetooth Low Energy)的发展,蓝牙技术正在一步步成熟,现在的大部分移动设备都配备有蓝牙4.0,相比之前的蓝牙技术耗电量大大减少. 在iOS中进行 ...

  3. iOS学习笔记28-系统服务(一)短信和邮件

    一.系统应用 在开发某些应用时,我们可能希望能够调用iOS系统内置的电话.短信.邮件.浏览器应用,或者直接调用安装的第三方应用,这个要怎么实现呢? 这里统一使用UIApplication的一个对象方法 ...

  4. mac下打开FTP服务

    MAC下打开FTP服务 周银辉 mac下一般用smb服务来进行远程文件访问,但要用FTP的话,高版本的mac os默认关掉了,可以用如下命令打开: sudo -s launchctl load -w ...

  5. IOS研究院之打开照相机与本地相册选择图片(六)

    原创文章如需转载请注明:转载自雨松MOMO程序研究院本文链接地址:IOS研究院之打开照相机与本地相册选择图片(六) Hello 大家好 IOS的文章好久都木有更新了,今天更新一篇哈. 这篇文章主要学习 ...

  6. Linux - ubuntu 16 打开SSH服务

    ubuntu 16 打开SSH服务 1.查看是否启动进程 roott@jiqing-virtual-machine:~# ps -ef | grep sshd root 3477 1 0 18:36 ...

  7. XamarinSQLite教程Xamarin.iOS项目中打开数据库文件

    XamarinSQLite教程Xamarin.iOS项目中打开数据库文件 以下是打开MyDocuments.db数据库的具体操作步骤: (1)将Mac电脑上的MyDocuments.db数据库移动到W ...

  8. 整理:iOS 短信与电话事件的获取

    整理:iOS 短信与电话事件的获取   background information: Core Telephony iOS 4.0 的官方 API 裡頭,多了一個叫做 Core Telephony  ...

  9. 打开windows服务

    #include <winsvc.h> void CXXXDlg::ServiceRun() { SERVICE_STATUS ssStatus; //获得ServiceControl M ...

随机推荐

  1. mysql 与 mycat集成读写分离

    1,先说下同步数据库原理,其实很简单.就是在主库做数据库操作的时候,会生成一个本地日志,日志会在my.ini当中配置看图一,读库会实时去扫描日志,如果有更新就直接在读库执行. 这个是主库my.ini配 ...

  2. T-SQL - 访问远程数据库并对其数据表进行操作

    一.概述 很多时候我们需要在.NET应用程序中使用一条SQL语句来访问来自不同服务器.不同数据库中的不同的表,实现方法有很多.我们可以在.NET应用程序中建立数据访问层,使用ADO.NET Entit ...

  3. android dialog 有关token的问题

    android中的dialog显示一般是显示在宿主context里面,但context有几种模式,我今天遇到问题就是在BroadcastReceiver广播里面构造对话框后显示出现的问题:androi ...

  4. NewQuant的设计(一)——整体的领域设计

    NewQuant的设计思路——整体的领域分析 “领域驱动设计(DDD)”是著名软件工程建模专家Eric Evans提出的一个重要概念,是“面向对象分析设计(OOAD)”的深化.当业务逻辑变得复杂,系统 ...

  5. BPF and eBPF linux

    http://www.brendangregg.com/blog/2016-10-21/linux-efficient-profiler.html http://www.brendangregg.co ...

  6. 关于flume配置加载(二)

    为什么翻flume的代码,一方面是确实遇到了问题,另一方面是想翻一下flume的源码,看看有什么收获,现在收获还谈不上,因为要继续总结.不够已经够解决问题了,而且确实有好的代码,后续会继续慢慢分享,这 ...

  7. 白电迁移-Auto fdisk

    ============================== fdisk /dev/vdbnp 1 w fdisk -l cd / mkdir /data mkfs.ext4 /dev/vdb1 mo ...

  8. 使用jQuery+PHP+Mysql实现抽奖程序

    抽奖程序在实际生活中广泛运用,由于应用场景不同抽奖的方式也是多种多样的.本文将采用实例讲解如何利用jQuery+PHP+Mysql实现类似电视中常见的一个简单的抽奖程序. 查看演示 本例中的抽奖程序要 ...

  9. 四种方式实现SQLServer 分页查询

    SQLServer 的数据分页: 假设现在有这样的一张表:CREATE TABLE test( id int primary key not null identity, names varchar( ...

  10. Redis执行Lua脚本的情况

    第一个测试: 往Redis里面存入1000个Hash,每个Hash里面有100个元素(Key 0-99,值是Key^2). PHP代码,执行33s左右 <?php $redis = new Re ...