IOS 在不打开电话服务的时候,可以响应服务器的推送消息,从而接收服务器的推送消息
- 在做即时通讯(基于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 在不打开电话服务的时候,可以响应服务器的推送消息,从而接收服务器的推送消息的更多相关文章
- iOS 从app跳转到Safari、从app打开电话呼叫
1.从app跳转到Safari NSString* strIdentifier = @"http://www.ybyb.com"; BOOL isExsit = [[UIAppli ...
- iOS学习笔记30-系统服务(三)蓝牙
一.蓝牙 随着蓝牙低功耗技术BLE(Bluetooth Low Energy)的发展,蓝牙技术正在一步步成熟,现在的大部分移动设备都配备有蓝牙4.0,相比之前的蓝牙技术耗电量大大减少. 在iOS中进行 ...
- iOS学习笔记28-系统服务(一)短信和邮件
一.系统应用 在开发某些应用时,我们可能希望能够调用iOS系统内置的电话.短信.邮件.浏览器应用,或者直接调用安装的第三方应用,这个要怎么实现呢? 这里统一使用UIApplication的一个对象方法 ...
- mac下打开FTP服务
MAC下打开FTP服务 周银辉 mac下一般用smb服务来进行远程文件访问,但要用FTP的话,高版本的mac os默认关掉了,可以用如下命令打开: sudo -s launchctl load -w ...
- IOS研究院之打开照相机与本地相册选择图片(六)
原创文章如需转载请注明:转载自雨松MOMO程序研究院本文链接地址:IOS研究院之打开照相机与本地相册选择图片(六) Hello 大家好 IOS的文章好久都木有更新了,今天更新一篇哈. 这篇文章主要学习 ...
- Linux - ubuntu 16 打开SSH服务
ubuntu 16 打开SSH服务 1.查看是否启动进程 roott@jiqing-virtual-machine:~# ps -ef | grep sshd root 3477 1 0 18:36 ...
- XamarinSQLite教程Xamarin.iOS项目中打开数据库文件
XamarinSQLite教程Xamarin.iOS项目中打开数据库文件 以下是打开MyDocuments.db数据库的具体操作步骤: (1)将Mac电脑上的MyDocuments.db数据库移动到W ...
- 整理:iOS 短信与电话事件的获取
整理:iOS 短信与电话事件的获取 background information: Core Telephony iOS 4.0 的官方 API 裡頭,多了一個叫做 Core Telephony ...
- 打开windows服务
#include <winsvc.h> void CXXXDlg::ServiceRun() { SERVICE_STATUS ssStatus; //获得ServiceControl M ...
随机推荐
- ubuntu kylin 16.04系统的基本安装
系统版本:ubuntu kylin 16.04 硬件状况:500G HDD+120G SSD 已安装操作系统:WIN 10专业版(craked) ——WIN 10系统是装在SSD的第一个盘符内的.以前 ...
- Codeforces Round #172 (Div. 2)
A. Word Capitalization 模拟. B. Nearest Fraction 枚举. C. Rectangle Puzzle 求出两个矩形的点,套简单多边形的面积交板子. D. Max ...
- Java JDBC使用方法
public class JDBC{public static void main(String[] args){//查询数据selectData();}//查询数据的方法private static ...
- iOS 一个app跳转另一个app并实现通信(如A跳到B并打开B中指定页面)
功能实现:A跳到B并打开B中指定页面 步骤: 1.首先创建两个项目(项目A,项目B),在项目B中的info.plist文件中添加URL Types,如下图所示:其中URL idenifier是项目B的 ...
- org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection 原因
org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection 可能出现的原因 ...
- jquery/js实现一个网页同时调用多个倒计时(最新的)
<div class="time countdown_1" data-time="1449429731"> <span class=" ...
- 【P1915】[usaco09 dec gold]电视游戏问题
在百度上搜到了nzx学长的题解orz 原题: 农夫约翰的奶牛们游戏成瘾!本来FJ是想要按照陶叫兽的做法拿她们去电击戒瘾的,可是后来他发现奶牛们玩游戏之后比原先产更多的奶.很明显,这是因为满足的牛会产更 ...
- LEETCODE —— Unique Binary Search Trees [动态规划]
Given n, how many structurally unique BST's (binary search trees) that store values 1...n? For examp ...
- winform中button的image属性无法更改
在开发一个winform程序的时候,界面中的button的image本来有一个贴图A.后来我觉得不合适,打算换成贴图B. 但是这时问题出现了:虽然我改成了贴图B,在IDE中的预览也是贴图B,但是每次编 ...
- LINQ to XML
void Main() { string path = @"C:\Users\knife\Desktop\test.xml"; XDocument xml = XDocument. ...