魔指仙境服务项目区五个一样是指

山东五个高速服务区商品将同城同价
【摘要】8月10日起,山东高速服务区管理有限公司所辖的京台高速德州、济南、泰安及青银高速济南、青州服务区超市所销售的香烟、饮料、方便面、火腿肠等大众商品将正式实行同城同价。
山东高速服务区超市(资料图)
& & 对于经常需要出远门的市民来说,机场、车站或者高速公路服务区里的商品价格往往要比普通商场里高出许多。在火车站,一碗面的价格可能高达数十元,一瓶饮料可能也要比市内的超市高出几倍。不过,今后这样的高定价行为有望得到遏制。
  记者从山东高速服务区了解到,今年7月28日,山东高速服务区试运行服务区超市大众商品&同城同价&,优质惠民,广受关注。8月10日起,山东高速服务区管理有限公司所辖的京台高速德州、济南、泰安及青银高速济南、青州服务区超市所销售的香烟、饮料、方便面、火腿肠等大众商品将正式实行同城同价。消费者在上述服务区超市内购买大众商品的价格将和城区内一致,这是省内高速服务区超市首次实行大众商品同城同价。
  9日上午,记者在京台高速德州服务区看到,服务区内的超市货架上摆放着琳琅满目的饮料、食品,农夫山泉天然水售价1.5元一瓶,红牛功能性饮料售价为6.2元,旅客惊喜地发现,这些商品标价将跟市区超市价格并无两样,并表示买起东西来都&任性&了。
  &以前超市里的矿泉水都卖2元以上,现在农夫山泉的矿泉水已经从原来的2.5元降到了1.5元一瓶。康师傅红烧牛肉方便面原来5.5元一碗,现在3.9元一碗,双汇王中王火腿肠现价也降到了2.5元,大部分商品相比以前都有不同程度的降价,现在的售价和消费者在市区内购买的价格基本没有差别。&超市工作人员说。
  据悉,平价商品的定价是参照济南市区统一银座超市相同商品售价制定的,并由商超管理中心根据市场价格变化随时进行调整。施行平价后,让广大旅客享受到了实实在在的实惠和优质服务,同时也达到了顾客、超市及供应商三赢局面,具体定价标准分为三类:诸如方便面、水、饮品、食品、香烟等大众商品统一定价,原产地特产限高定价,不高于当地农产品经销中心零售价;其他一些如地域性的休闲、进口、季节性等商品给予指导定价。
  山东高速服务区是省内首家实行大众商品同城同价的服务区。下一步,公司将在试点成功的基础上,把同城同价的政策推向山东高速所辖的各个服务区超市。
京ICP证040089号
网络传播视听节目许可证号:0105123 京公网安备号 京网文[5号当前位置:
>>>财政转移支付是指一国政府为了实现各地公共服务水平的均等化而实..
财政转移支付是指一国政府为了实现各地公共服务水平的均等化而实行的一种财政资金转移或财政平衡制度。完成以下各题。小题1:年,中央财政对8个民族省区(即5个自治区和青海、贵州、云南3个省)的转移支付总额达26055亿元.国家对民族省区的财政转移支付是①提高少数民族政治、经济地位的主要手段②保证民族自治地方享有更多自治权的措施③协调少数民族特殊利益与国家整体利益的表现④发展平等团结互助和谐的社会主义民族关系的重要举措A.①②B.①④C.②③D.③④小题2:要加大对民族省区的财政转移支付力度,关键是要增加财政收入。在我国当前情况下,增加财政收入的合理措施是A.大幅度提高税率B.大力发展实体经济C.提高职工工资水平D.扩大资本市场规模
题型:单选题难度:中档来源:不详
小题1:D小题2:B小题1:试题分析:国家对民族省区的财政转移支付目的是促进少数民族共同繁荣。财政转移支付有利于协调少数民族特殊利益与国家整体利益的关系。也是发展平等团结互助和谐的社会主义民族关系的重要举措。③④符合题意,选D。①财政转移支付不是提高少数民族政治、经济地位的主要手段,①表述不科学。②保证民族自治地方享有更多自治权观点错误。小题2:试题分析:经济发展水平是影响财政收入的基础性因素,因此增加财政收入的合理措施是大力发展实体经济。因此,正确答案为B。大幅度提高税率,虽然短期可以增加财政收入,但是大幅度提高税率会影响企业与劳动者的利益,最终影响生产发展。A观点错误,不选。提高职工工资水平和扩大资本市场规模都不是增加财政收入的合理措施。C、D也不符合题意,排除。
马上分享给同学
据魔方格专家权威分析,试题“财政转移支付是指一国政府为了实现各地公共服务水平的均等化而实..”主要考查你对&&财政及其作用,财政收入与支出&&等考点的理解。关于这些考点的“档案”如下:
现在没空?点击收藏,以后再看。
因为篇幅有限,只列出部分考点,详细请访问。
财政及其作用财政收入与支出
国民收入含义:
指物质生产部门劳动者在一定时期所创造的价值。从社会总产值中扣除物质消耗后的剩余部分就是国民收入,国民收入(价值形态)=社会总产值-已消耗生产资料价值或国民收入(实物形态)=社会总产品-已消耗生产资料。
财政含义:
为了履行国家的对内对外职能,国家必须占有和消费一定的社会财富。&国民收入:
&①含义:指物质生产部门劳动者在一定时期所创造的价值。从社会总产值中扣除物质消耗后的剩余部分就是国民收入,国民收入(价值形态)=社会总产值-已消耗生产资料价值或国民收入(实物形态)=社会总产品-已消耗生产资料。
②意义:国民收入是劳动者新创造的社会财富,标志着一个国家扩大再生产和提高人民生活水平的能力。
③国民收入增加的途径:增加国民收入的根本途径是广泛采用科学技术,提高劳动生产率。
④国民收入按其最终用途分为积累和消费两部分。 A积累主要用于扩大再生产、非生产性基本建设和社会物资储备。 B消费主要包括个人消费和公共消费。 C积累和消费的关系二者既有相互促进的一面,又有不一致的一面。相互促进——积累主要用于扩大再生产,生产的发展为消费提供前提和基础;消费是生产的目的,消费会促进生产。不一致——在一定时期内,国民收入的总量是既定的,积累和消费之间是此消彼长的关系。如果积累多了,就会影响人民生活水平的提高,从而影响人民的劳动积极性,这样从根本上也不利于积累的扩大;如果消费多了,财富都吃光分光,也不利于生产的进一步扩大,最终又会影响生活水平的提高。 D正确处理积累和消费的关系在生产发展、国民收入增加的基础上,积累和消费部分都应该有所增长。积累基金和消费基金应该与国民收入的物质构成相一致。正确处理国家、企业、个人之间的分配关系。
财政的含义及实现:
①财政:指国家的收入和支出,财政收入和支出是国家参与社会分配的两个方面。财政是通过预算实现的。 ②国家预算:由政府提出并经过法定程序审查批准的国家年度基本收支计划。 ③国家决算:上一年度国家预算执行结果的会计报告。
财政的作用:
&①是促进社会公平、改善人民生活的物质保障。通过国民收入的再分配,缩小收入分配差距,促进教育公平,建立社会保障体系与基本医疗卫生制度,保障和提高人民的生活水平,推动建设社会主义和谐社会。 ②国家财政具有促进资源合理配置的作用。如果完全由市场配置资源,会导致投入某些行业、地区的资源严重不足,影响社会经济生活的正常运行与发展。国家通过财政支持这些行业,地区的建设,有助于资源的合理配置。 ③国家财政具有促进国民经济平稳运行的作用。经济平稳运行要求社会总供给与社会总需求保持基本平衡,避免大起大落。在经济增长滞缓、经济运行主要受需求不足制约时政府可以采取扩张性财政政策,通过增加经济建设支出,减少税收,刺激总需求增长,降低失业率,拉动经济增长。反之,在经济过热,物价上涨、经济运行主要受供给能力制约时,政府可以采取紧缩性财政政策,通过减少财政支出,增加税收,抑制总需求,稳定物价,给经济“降温”。 财政收入的含义:
&财政收入是国家通过一定的形式和渠道筹集起来的资金。
财政支出的含义:
财政支出是国家对集中起来的财政资金进行分配和使用的过程。 财政收入与支出的关系:
①财政收支平衡:受多种因素的制约,财政收支完全相等的情况几乎不存在,当年的财政收入大于支出略有盈余,或支出大于收入略有赤字,都属于财政收支平衡。 ②财政赤字:指当年的财政支出大于财政收入的部分。(财政赤字必须控制在一定范围内) ③财政盈余:指当年的财政收入大于支出的部分。国家应当根据具体情形,合理确定财政收支关系,促进社会总供求平衡。 财政收入:
①含义:国家通过一定的形式和渠道筹集起来的资金,就是财政收入。 ②财政收入的渠道:税收收入、利润收入(国企税后利润、分红收入)、债务收入以及其他收入。其中税收是国家组织财政收入的最普遍的形式,是财政收入的最重要的来源。 ③影响财政收入的主要因素:经济发展水平和分配政策。 A.经济发展水平:我国发展水平对财政收入的影响是基础性的,二者是根与叶、源与流的关系。只有加快经济发展,社会财富不断增加,才能保证国家财政收入的持续增长。 B.分配政策:在社会财富总量一定的前提下,如果国家财政集中的财富过多,会直接减少企业和个人的收入,不利于企业生产的扩大和个人购买力的增加,最终将对财政收入的增加产生不利影响。相反,如果国家财政集中的收入太少,将直接影响国家职能的有效发挥,尤其会降低财政对经济发展支持和调控的力度,最终也不利于企业的发展和个人收入的增加。因此,国家应当制定合理的分配政策,既保证国家财政收入的稳步增长,又促进企业的持续发展和人民生活水平的不断提高。
财政支出:
①含义:国家对集中起来的财政资金进行分配和使用,就是财政支出。 ②支出的种类(按具体用途分):可以分为经济建设支出,科学、教育、文化、卫生事业支出,行政管理和国防支出,社会保障支出,债务支出。(另:社会保障支出指国家财政为公民提供的社会保险、社会福利、社会救济和社会优抚各种费用。其内容:社会保险:主要有养老保险、医疗保险、失业保险等。社会救济:包括自然灾害救济、失业救济、孤寡病残救济和困难户救济等。(贫民、灾民)社会福利:指社会服务事业及设施。如对公民义务教育,特殊社会福利,如孤儿院等。社会优抚:包括牺牲、病故优抚费、烈军属、复员军人补助费、伤残抚恤费、见义勇为者奖励等。(与军人)
财政收入与支出的关系:
&①财政收支平衡:受多种因素的制约,财政收支完全相等的情况几乎不存在,当年的财政收入大于支出略有盈余,或支出大于收入略有赤字,都属于财政收支平衡。 ②财政赤字:指当年的财政支出大于财政收入的部分。(财政赤字必须控制在一定范围内) ③财政盈余:指当年的财政收入大于支出的部分。国家应当根据具体情形,合理确定财政收支关系,促进社会总供求平衡。
发现相似题
与“财政转移支付是指一国政府为了实现各地公共服务水平的均等化而实..”考查相似的试题有:
132817202434258357238226267078192592sql server 2005 5用户版是指能安装在5台服务器上吗?5用户是什么意思?_百度知道
sql server 2005 5用户版是指能安装在5台服务器上吗?5用户是什么意思?
提问者采纳
XP&#47,XP安装时没有修改项。正版2003如果许可不够是要花钱买的,这是一个服务器操作系统,其它用户连接只能等待这五个用户有断开连接后才可以连接成攻,5用户就是连接到网络时最多可以有五个用户并发连接你的系统,XP和2000默认是10个连接;2000都有连接用户限制,但2000在安装时可以修改,2003也不例外就是5个许可
其他类似问题
为您推荐:
其他2条回答
回答很详细,也学习了
SQL Server 2005是数据库管理软件不是操作系统,拜托
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁先提前跟各位锋友说一声春节快乐!祝大家在假期里吃好喝好玩好睡好,躺着玩坐着玩趴着...
一年一度新春到,金猴祥云把春报。在这个隆重的节日里,威威代表威锋网给广大锋友拜年...
让我们充满期待进入新的一年,来品尝开发商们精心烹制、即将上席的开年大餐吧。
新年伊始,兔兔助手为大家带来了全新的版本,作为新年献礼,新增壁纸和游戏资讯两大功...
或许不久后,你就能在附近的苹果零售店中看到这款贴膜工具。
iOS 9.2的停止验证,无论是对于越狱用户还是普通用户来说都没有太大的影响。
由此看来,苹果希望统一所有主要产品的配色方案。
每当苹果发布财报时,我们都能够看到iPhone带来的惊人利润,那么Android方面呢?
很多老玩家可能还对2013年在3DS上推出的游戏《暴走老精灵》有一定的印象,这款主打“...
最新作《Splash Cars》(狂溅飞车)的诞生,让玩家第一次认识到原来游戏开发商Craneba...
玩家仅需点击屏幕左右两侧即可控制角色进行移动,而炸弹就会从屏幕上方像下雨一样的落...
此前威锋网曾经报道,传统桌游《通路(Tsuro)》即将登陆iOS平台中,现在游戏终于如约...
变色龙在游戏中的出镜率非常高,这不,又有一款名为《贪吃舌(Pull My Tongue)》的新...
春节前的最后一个神奇周四,SQUARE ENIX 终于给我们端上了一份隆重无比的冷饭,重制版...
开发商想要将游戏打造成一款节奏明快的街机回合制射击游戏,而事实是他们也做到了。
或许不久后,你就能在附近的苹果零售店中看到这款贴膜工具。
一家名为Appostasy的公司就推出了一款名为PenSe的Apple Pencil配件,让你的苹果笔不在...
可以充电颜值又足够高的背包,确实非常吸引人。
当然是不薄的了,不过对这方面功能有需要的人也不会在乎这点厚度。
要知道,很多公司的平板都是直接配送手写笔的,包括微软和三星这样的大牌。
苹果表示,有 MFi 认证的助听器产品比传统的助听器更出色,理应获得美国联邦通讯委员...
其实手机壳还是小一点比较好,拿起来不那么困难,但是如果有特殊作用的话,那就另当别...
难怪没有一颗螺丝钉,原来是酷炫的分段式设计,这下逼格又不知高到哪里去了。
ios7现在的后台刷新和以前的从服务器获取有什么不同
注册时间 最后登录
在线时间226 小时 UID
主题帖子人气
白苹果, 积分 719, 距离下一级还需 781 积分
以前在论坛里看到一帖子,讲解关于ios系统的,说伪后台和真后台,说apple的服务器会从软件的服务器获取更新,然后软件获取什么信息会自动的从apple的服务器上获取,这样,具体怎么说的来着,我也忘记了,然后现在突然增加 个后台自动刷新,跟以前的机制不同,但是为什么要这样呢。以前的机制不挺好的么?
注册时间 最后登录
在线时间141 小时 UID
帖子 精华1
主题帖子人气
注册时间 最后登录
在线时间22 小时 UID
主题帖子人气
不明真相,坐等解释
注册时间 最后登录
在线时间22 小时 UID
主题帖子人气
iOS7以前的MultitaskingiOS的多任务是在iOS4的时候被引入的,在此之前iOS的app都是按下Home键就被干掉了。iOS4虽然引入了后台和多任务,但是实际上是伪多任务,一般的app后台并不能执行自己的代码,只有少数几类服务在通过注册后可以真正在后台运行,并且在提交到AppStore的时候也会被严格审核是否有越权行为,这种限制主要是出于对于设备的续航和安全两方面进行的考虑。之后经过iOS5和6的逐渐发展,后台能运行的服务的种类虽然出现了增加,但是iOS后台的本质并没有变化。在iOS7之前,系统所接受的应用多任务可以大致分为几种:后台完成某些花费时间的特定任务后台播放音乐等位置服务IP电话(VoIP)Newsstand
在WWDC 2013的keynote上,iOS7的后台多任务改进被专门拿出来向开发者进行了介绍,到底iOS7里多任务方面有什么新的特性可以利用,如何使用呢?简单来说,iOS7在后台特性方面有很大改进,不仅改变了以往的一些后台任务处理方式,还加入了全新的后台模式,本文将针对iOS7中新的后台特性进行一些学习和记录。大体来说,iOS7后台的变化在于以下四点:改变了后台任务的运行方式增加了后台获取(Background Fetch)增加了推送唤醒(静默推送,Silent Remote Notifications)增加了后台传输(?Background Transfer Service)
iOS7的多任务后台任务首先看看后台任务的变化,先说这方面的改变,而不是直接介绍新的API,是因为这个改变很典型地代表了iOS7在后台任务管理和能耗控制上的大体思路。从上古时期开始(其实也就4.0),UIApplication提供了-beginBackgroundTaskWithExpirationHandler:方法来使app在被切到后台后仍然能保持运行一段时间,app可以用这个方法来确保一些很重很慢的工作可以在急不可耐的用户将你的应用扔到后台后还能完成,比如编码视频,上传下载某些重要文件或者是完成某些数据库操作等,虽然时间不长,但在大多数情况下勉强够用。如果你之前没有使用过这个API的话,它使用起来大概是长这个样子的:- (void) doUpdate& & dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{& && &&&[self beginBackgroundUpdateTask];& && &&&NSURLResponse * response =& && &&&NSError&&* error =& && &&&NSData * responseData = [NSURLConnection sendSynchronousRequest: request returningResponse: &response error: &error];& && &&&// Do something with the result& && &&&[self endBackgroundUpdateTask];& & });}- (void) beginBackgroundUpdateTask{& & self.backgroundUpdateTask = [[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:^{& && &&&[self endBackgroundUpdateTask];& & }];}- (void) endBackgroundUpdateTask{& & [[UIApplication sharedApplication] endBackgroundTask: self.backgroundUpdateTask];& & self.backgroundUpdateTask = UIBackgroundTaskI}&&
在beginBackgroundTaskWithExpirationHandler:里写一个超时处理(系统只给app分配了一定时间来进行后台任务,超时之前会调用这个block),然后进行开始进行后台任务处理,在任务结束或者过期的时候call一下endBackgroundTask:使之与begin方法配对(否则你的app在后台任务超时的时候会被杀掉)。同时,你可以使用UIApplication实例的backgroundTimeRemaining属性来获取剩余的后台执行时间。具体的执行时间来说,在iOS6和之前的系统中,系统在用户退出应用后,如果应用正在执行后台任务的话,系统会保持活跃状态直到后台任务完成或者是超时以后,才会进入真正的低功耗休眠状态。iOS6之前的后台任务处理而在iOS7中,后台任务的处理方式发生了改变。系统将在用户锁屏后尽快让设备进入休眠状态,以节省电力,这时后台任务是被暂停的。之后在设备在特定时间进行系统应用的操作被唤醒(比如检查邮件或者接到来电等)时,之前暂停的后台任务将一起进行。就是说,系统不会专门为第三方的应用保持设备处于活动状态。如下图示iOS7的后台任务处理这个变化在不减少应用的后台任务时间长度的情况下,给设备带来了更多的休眠时间,从而延长了续航。对于开发者来说,这个改变更多的是系统层级的变化,对于非网络传输的任务来说,保持原来的用法即可,新系统将会按照新的唤醒方式进行处理;而对于原来在后台做网络传输的应用来说,苹果建议在iOS7中使用NSURLSession,创建后台的session并进行网络传输,这样可以很容易地利用更好的后台传输API,而不必受限于原来的时长,关于这个具体的我们一会儿再说。后台获取(Background Fetch)现在的应用无法在后台获取信息,比如社交类应用,用户一定需要在打开应用之后才能进行网络连接,获取新的消息条目,然后才能将新内容呈现给用户。说实话这个体验并不是很好,用户在打开应用后必定会有一段时间的等待,每次皆是如此。iOS7中新加入的后台获取就是用来解决这个不足的:后台获取干的事情就是在用户打开应用之前就使app有机会执行代码来获取数据,刷新UI。这样在用户打开应用的时候,最新的内容将已然呈现在用户眼前,而省去了所有的加载过程。想想看,没有加载的网络体验的世界,会是怎样一种感觉。这已经不是smooth,而是真的amazing了。那具体应该怎么做呢?一步一步来:启用后台获取首先是修改应用的Info.plist,在UIBackgroundModes中加入fetch,即可告诉系统应用需要后台获取的权限。另外一种更简单的方式,得益于Xcode5的Capabilities特性(参见可以参见我之前的一篇),现在甚至都不需要去手动修改Info.plist来进行添加了,打开Capabilities页面下的Background Modes选项,并勾选Background fetch选项即可(如下图)。在Capabilities中开启Background Modes笔者写这篇文章的时候iOS7还没有上市,也没有相关的审核资料,所以不知道如果只是在这里打开了fetch选项,但却没有实现的话,应用会不会无法通过审核。但是依照苹果一贯的做法来看,如果声明了需要某项后台权限,但是结果却没有相关实现的话,被拒掉的可能性还是比较大的。因此大家尽量不要拿上线产品进行实验,而应当是在demo项目里研究明白以后再到上线产品中进行实装。设定获取间隔对应用的UIApplication实例设置获取间隔,一般在应用启动的时候调用以下代码即可:1[color=#586e75 !important][[[color=#268bd2 !important]UIApplication [color=#268bd2 !important]sharedApplication [color=#85990 !important]setMinimumBackgroundFetchInterval:[color=#268bd2 !important]UIApplicationBackgroundFetchIntervalMinimum[color=#586e75 !important]];
如果不对最小后台获取间隔进行设定的话,系统将使用默认值UIApplicationBackgroundFetchIntervalNever,也就是永远不进行后台获取。当然,-setMinimumBackgroundFetchInterval:方法接受的是NSTimeInterval,因此你也可以手动指定一个以秒为单位的最小获取间隔。需要注意的是,我们都已经知道iOS是一个非常霸道为我独尊的系统,因此自然也不可能让一介区区第三方应用来控制系统行为。这里所指定的时间间隔只是代表了“在上一次获取或者关闭应用之后,在这一段时间内一定不会去做后台获取”,而真正具体到什么时候会进行后台获取,那完全是要看系统娘的心情的我们是无从得知的。系统将根据你的设定,选择比如接收邮件的时候顺便为你的应用获取一下,或者也有可能专门为你的应用唤醒一下设备。作为开发者,我们应该做的是为用户的电池考虑,尽可能地选择合适自己应用的后台获取间隔。设置为UIApplicationBackgroundFetchIntervalMinimum的话,系统会尽可能多尽可能快地为你的应用进行后台获取,但是比如对于一个天气应用,可能对实时的数据并不会那么关心,就完全不必设置为UIApplicationBackgroundFetchIntervalMinimum,也许1小时会是一个更好的选择。新的Mac OSX 10.9上已经出现了功耗监测,用于让用户确定什么应用是能耗大户,有理由相信同样的东西也可能出现在iOS上。如果不想让用户因为你的应用是耗电大户而怒删的话,从现在开始注意一下应用的能耗还是蛮有必要的(做绿色环保低碳的iOS app,从今天开始~)。实现后台获取代码并通知系统在完成了前两步后,只需要在AppDelegate里实现-application:performFetchWithCompletionHandler:就行了。系统将会在执行fetch的时候调用这个方法,然后开发者需要做的是在这个方法里完成获取的工作,然后刷新UI,并通知系统获取结束,以便系统尽快回到休眠状态。获取数据这是应用相关的内容,在此不做赘述,应用在前台能完成的工作在这里都能做,唯一的限制是系统不会给你很长时间来做fetch,一般会小于一分钟,而且fetch在绝大多数情况下将和别的应用共用网络连接。这些时间对于fetch一些简单数据来说是足够的了,比如微博的新条目(大图除外),接下来一小时的天气情况等。如果涉及到较大文件的传输的话,用后台获取的API就不合适了,而应该使用另一个新的文件传输的API,我们稍后再说。类似前面提到的后台任务完成时必须通知系统一样,在在获取完成后,也必须通知系统获取完成,方法是调用-application:performFetchWithCompletionHandler:的handler。这个CompletionHandler接收一个UIBackgroundFetchResult作为参数,可供选择的结果有UIBackgroundFetchResultNewData,UIBackgroundFetchResultNoData,UIBackgroundFetchResultFailed三种,分别表示获取到了新数据(此时系统将对现在的UI状态截图并更新App Switcher中你的应用的截屏),没有新数据,以及获取失败。写一个简单的例子吧:324//File: YourAppDelegate.m-(void)application:(UIApplication *)application performFetchWithCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler{& & UINavigationController *navigationController = (UINavigationController*)self.window.rootViewC& & id fetchViewController = navigationController.topViewC& & if ([fetchViewController respondsToSelector:@selector(fetchDataResult:)]) {& && &&&[fetchViewController fetchDataResult:^(NSError *error, NSArray *results){& && && && &if (!error) {& && && && &&&if (results.count != 0) {& && && && && && &//Update UI with results.& && && && && && &//Tell system all done.& && && && && && &completionHandler(UIBackgroundFetchResultNewData);& && && && &&&} else {& && && && && && &completionHandler(UIBackgroundFetchResultNoData);& && && && &&&}& && && && &} else {& && && && && & completionHandler(UIBackgroundFetchResultFailed);& && && && &}& && &&&}];& & } else {& && &&&completionHandler(UIBackgroundFetchResultFailed);& & }}
当然,实际情况中会比这要复杂得多,用户当前的ViewController是否合适做获取,获取后的数据如何处理都需要考虑。另外要说明的是上面的代码在获取成功后直接在appDelegate里更新UI,这只是为了能在同一处进行说明,但却是不正确的结构。比较好的做法是将获取和更新UI的业务逻辑都放到fetchViewController里,然后向其发送获取消息的时候将completionHandler作为参数传入,并在fetchViewController里完成获取结束的报告。另一个比较神奇的地方是系统将追踪用户的使用习惯,并根据对每个应用的使用时刻给一个合理的fetch时间。比如系统将记录你在每天早上9点上班的电车上,中午12点半吃饭时,以及22点睡觉前会刷一下微博,只要这个习惯持续个三四天,系统便会将应用的后台获取时刻调节为9点,12点和22点前一点。这样在每次你打开应用都直接有最新内容的同时,也节省了电量和流量。后台获取的调试既然是系统决定的fetch,那我们要如何测试写的代码呢?难道是将应用退到后台,然后安心等待系统进行后台获取么?当然不是…Xcode5为我们提供了两种方法来测试后台获取的代码。一种是从后台获取中启动应用,另一种是当应用在后台时模拟一次后台推送。对于前者,我们可以新建一个Scheme来专门调试从后台启动。点击Xcode5的Product-&Scheme-&Edit Scheme(或者直接使用快捷键?&)。在编辑Scheme的窗口中点Duplicate Scheme按钮复制一个当前方案,然后在新Scheme的option中将Background Fetch打上勾。从这个Scheme来运行应用的时候,应用将不会直接启动切入前台,而是调用后台获取部分代码并更新UI,这样再点击图标进入应用时,你应该可以看到最新的数据和更新好的UI了。更改Scheme的选项为从后台获取事件中启动另一种是当应用在后台时,模拟一次后台获取。这个比较简单,在app调试运行时,点击Xcode5的Debug菜单中的Simulate Background Fetch,即可模拟完成一次获取调用。推送唤醒(Remote Notifications)远程推送(??Remote Push Notifications)可以说是增加用户留存率的不二法则,在iOS6和之前,推送的类型是很单一的,无非就是显示标题内容,指定声音等。用户通过解锁进入你的应用后,appDelegate中通过推送打开应用的回调将被调用,然后你再获取数据,进行显示。这和没有后台获取时的打开应用后再获取数据刷新的问题是一样的。在iOS7中这个行为发生了一些改变,我们有机会使设备在接收到远端推送后让系统唤醒设备和我们的后台应用,并先执行一段代码来准备数据和UI,然后再提示用户有推送。这时用户如果解锁设备进入应用后将不会再有任何加载过程,新的内容将直接得到呈现。实装的方法和刚才的后台获取比较类似,还是一步步来:启用推送唤醒和上面的后台获取类似,更改Info.plist,在UIBackgroundModes下加入remote-notification即可开启,当然同样的更简单直接的办法是使用Capabilities。更改推送的payload在iOS7中,如果想要使用推送来唤醒应用运行代码的话,需要在payload中加入content-available,并设置为1。1234aps {& &&&content-available: 1& &&&alert: {...}& &}
??实现推送唤醒代码并通知系统最后在appDelegate中实现?-application:didReceiveRemoteNotification:fetchCompletionHandle:。这部分内容和上面的后台获取部分完全一样,在此不再重复。一些限制和应用的例子因为一旦推送成功,用户的设备将被唤醒,因此这类推送不可能不受到限制。Apple将限制此类推送的频率,当频率超过一定限制后,带有content-available标志的推送将会被阻塞,以保证用户设备不被频繁唤醒。按照Apple的说法,这个频率在一小时内个位数次的推送的话不会有太大问题。Apple给出了几个典型的应用情景,比如一个电视节目类的应用,当用户标记某些剧目为喜爱时,当这些剧有更新时,可以给用户发送静默的唤醒推送通知,客户端在接到通知后检查更新并开始后台下载(注意后台下载的部分绝对不应该在推送回调中做,而是应该使用新的后台传输服务,后面详细介绍)。下载完成后发送一个本地推送告知用户新的内容已经准备完毕。这样在用户注意到推送并打开应用的时候,所有必要的内容已经下载完毕,UI也将切换至用户喜爱的剧目,用户只需要点击播放即可开始真正使用应用,这绝对是无比顺畅和优秀的体验。另一种应用情景是文件同步类,比如用户标记了一些文件为需要随时同步,这样用户在其他设备或网页服务上更改了这些文件时,可以发送静默推送然后使用后台传输来保持这些文件随时是最新。如果您是一路看下来的话,不难发现其实后台获取和静默推送在很多方面是很类似的,特别是实现和处理的方式,但是它们适用的情景是完全不同的。后台获取更多地使用在泛数据模式下,也即用户对特定数据并不是很关心,数据应该被更新的时间也不是很确定,典型的有社交类应用和天气类应用;而静默推送或者是推送唤醒更多地应该是用户感兴趣的内容发生更新时被使用,比如消息类应用和内容型服务等。根据不同的应用情景,选择合适的后台策略(或者混合使用两者),以带给用户绝佳体验,这是Apple所期望iOS7开发者做到的。后台传输(?Background Transfer Service)iOS6和之前,iOS应用在大块数据的下载这一块限制是比较多的:只有应用在前台时能保持下载(用户按Home键切到后台或者是等到设备自动休眠都可能中止下载),在后台只有很短的最多十分钟时间可以保持网络连接。如果想要完成一个较大数据的下载,用户将不得不打开你的app并且基本无所事事。很多这种时候,用户会想要是在下载的时候能切到别的应用刷刷微博或者玩玩游戏,然后再切回来的就已经下载完成了的话,该有多好。iOS7中,这可以实现了。iOS7引入了后台传输的相关方式,用来保证应用退出后数据下载或者上传能继续进行。这种传输是由iOS系统进行管理的,没有时间限制,也不要求应用运行在前台。想要实现后台传输,就必须使用iOS7的新的网络连接的类,NSURLSession。这是iOS7中引入用以替代陈旧的NSURLConnection的类,著名的AFNetworking甚至不惜从底层开始完全重写以适配iOS7和NSURLSession(参见),NSURLSession的重要性可见一斑。在这里我主要只介绍NSURLSession在后台传输中的一些使用,关于这个类的其他用法和对原有NSURLConnection的加强,只做稍微带过而不展开,有兴趣深入挖掘和使用的童鞋可以参看Apple的文档(或者更简单的方式是使用AFNetworking来处理网络相关内容,而不是直接和CFNetwork框架打交道)。步骤和例子后台传输的的实现也十分简单,简单说分为三个步骤:创建后台传输用的NSURLSession对象;向这个对象中加入对应的传输的NSURLSessionTask,并开始传输;在实现appDelegate里实现-application:handleEventsForBackgroundURLSession:completionHandler:方法,以刷新UI及通知系统传输结束。接下来结合代码来看一看实际的用法吧~首先我们需要一个用于后台下载的session:1- (NSURLSession *)backgroundSession{& & //Use dispatch_once_t to create only one background session. If you want more than one session, do with different identifier& & static NSURLSession *session =& & static dispatch_once_t onceT& & dispatch_once(&onceToken, ^{& && &&&NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration backgroundSessionConfiguration:@&com.yourcompany.appId.BackgroundSession&];& && &&&session = [NSURLSession sessionWithConfiguration:configuration delegate:self delegateQueue:nil];& & });& &}
这里创建并配置了NSURLSession,将其指定为后台session并设定delegate。接下来向其中加入对应的传输用的NSURLSessionTask,并启动下载。//@property (nonatomic) NSURLSession *//@property (nonatomic) NSURLSessionDownloadTask *downloadT- (NSURLSession *)backgroundSession{& & //...}- (void) beginDownload{& & NSURL *downloadURL = [NSURL URLWithString:DownloadURLString];& & NSURLRequest *request = [NSURLRequest requestWithURL:downloadURL];& & self.session = [self backgroundSession];& & self.downloadTask = [self.session downloadTaskWithRequest:request];& & [self.downloadTask resume];}
最后一步是在appDelegate中实现-application:handleEventsForBackgroundURLSession:completionHandler:1//AppDelegate.m- (void)application:(UIApplication *)application handleEventsForBackgroundURLSession:(NSString *)identifier&&completionHandler:(void (^)())completionHandler{& & //Check if all transfers are done, and update UI& & //Then tell system background transfer over, so it can take new snapshot to show in App Switcher& & completionHandler();& & //You can also pop up a local notification to remind the user& & //...}
NSURLSession和对应的NSURLSessionTask有以下重要的delegate方法可以使用:1234- (void)URLSession:(NSURLSession *)session downloadTask:(NSURLSessionDownloadTask *)downloadTask& && && && && && && && && && &didFinishDownloadingToURL:(NSURL *)- (void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task& && && && && && && && && &didCompleteWithError:(NSError *)
一旦后台传输的状态发生变化(包括正常结束和失败)的时候,应用将被唤醒并运行appDelegate中的回调,接下来NSURLSessionTask的委托方法将在后台被调用。虽然上面的例子中直接在appDelegate中call了completionHandler,但是实际上更好的选择是在appDelegate中暂时持有completionHandler,然后在NSURLSessionTask的delegate方法中检查是否确实完成了传输并更新UI后,再调用completionHandler。另外,你的应用到现在为止只是在后台运行,想要提醒用户传输完成的话,也许你还需要在这个时候发送一个本地推送(记住在这个时候你的应用是可以执行代码的,虽然是在后台),这样用户可以注意到你的应用的变化并回到应用,并开始已经准备好数据和界面。一些限制首先,后台传输只会通过wifi来进行,用户大概也不会开心蜂窝数据的流量被后台流量用掉。后台下载的时间与以前的关闭应用后X分钟的模式不一样,而是为了节省电力变为离散式的下载,并与其他后台任务并发(比如接收邮件等)。另外还需要注意的是,对于下载后的内容不要忘记写到应用的目录下(一般来说这种可以重复获得的内容应该放到cache目录下),否则如果由于应用完全退出的情况导致没有保存到可再次访问的路径的话,那可就白做工了。后台传输非常适合用于文件,照片或者追加游戏内容关卡等的下载,如果配合后台获取或者静默推送的话,相信可以完全很多很有趣,并且以前被限制而无法实现的功能。
威锋旗下产品
Hi~我是威威!
沪公网安备 29号 丨 沪ICP备号-1 丨 深公安网监备案号 5
增值电信业务经营许可证:
Powered by Discuz!

我要回帖

更多关于 魔指天堂服务项目 的文章

 

随机推荐