当前位置: 编程技术>移动开发
本页文章导读:
▪XCODE 4.2封装发布 XCODE 4.2打包发布
现在使用的xcode 4.2,最近要打包应用程序,网上查了好多都是关于3.2.5的,经过一翻努力终于解决了,现在分享给大家,希望对大家有帮助。
首先要连接真机,选择【product】.........
▪ 短信技术考试题 短信技术试题
短信技术试题一、 选择题:1、 中国移动梦网业务合作伙伴简称为 (A)A、 SP B、 CP C、ICP D、 IS.........
▪ 更新施用 达内笔记网上看到 记录下以后用 更新应用 达内笔记网上看到 记录下以后用
达内android开发笔记(12):Android应用的自动升级、更新模块的实现 我们看到很多Android应用都具有自动更新功能,用户一键就可以完成软件的升.........
[1]XCODE 4.2封装发布
来源: 互联网 发布时间: 2014-02-18
XCODE 4.2打包发布
现在使用的xcode 4.2,最近要打包应用程序,网上查了好多都是关于3.2.5的,经过一翻努力终于解决了,现在分享给大家,希望对大家有帮助。
首先要连接真机,选择【product】下的【building for】,然后再选择【build for archiving 】,然后选择【product】下的【archive】 ,在这里会打开【Origanizer-Archives】,在下方选中你要打包发布的程序,你会看到【Validate...】、【Share...】、【Submit...】三个选项,在此可以根据你的需要依次进行操作。
在做上述工作之前,首先要确定你的应用程序可以在真机上运行,并且distribution证书已经安装并可以正常使用,distribution证书的安装和开发者证书一样,在此就不多说了。
[2] 短信技术考试题
来源: 互联网 发布时间: 2014-02-18
短信技术试题
短信技术试题
一、 选择题:
1、 中国移动梦网业务合作伙伴简称为 (A)
A、 SP B、 CP C、ICP D、 ISP
2、 移动梦网短信各网元之间的消息类型和定义,目前采用 (B)
A CMPP2.0 B CMPP3.0 C CMPP2.1 D CMPP2.3
3、 CMPP的英文全称(C)
A Intenet Short Message Gateway B Data Service Manage Platform
C China Mobile Peer to Peer D Service Provider
4、 以下表明企业代码的是 (A)
A SP_Id B ISMG_Id C SP_Code D Service_Id
5、 CMPP3.0中, SP与网关间的短连接的端口号是以下那一个 (B)
A 7890 B 7900 C 7930 D 9168
6、 Msg_Fmt信息格式中,4代表的意思是(B)
A短信写卡操作 B二进制信息 C UCS2编码 D ASCII串
7、 PROVISION接口正向同步包的actionid为3表示的操作是(B)
A定制业务 B激活业务 C取消业务 D暂停业务
8、 MISC系统返回80102错误表示:(C)
A手机号码不存在 B手机号码错误 C手机号码停机 D手机号码前非
9 、MISC系统返回80107错误表示:(D)
A业务暂停 B业务代码错误 C服务代码错误 D业务不存在
10 MISC系统返回80115错误表示:(A)
A用户没有定购该业务 B 用户暂停该业务
C用户已经定购该业务 D 用户已经取消该业务
11 目前短信点播linkid的存活时间是(B)
A 30分钟 B 60分钟 C 90分钟 D 120分钟
12 本月什么时间点以后定制包月短信业务不出话单 (A)
A 20日 B 21日 C 22日 D 25日
13 短信按条业务信息费率是由哪个系统填写的(D)
A SP业务平台 B短信中心 C 短信网关 D MISC平台
14 以下关于用户定购关系保存哪个是正确的(B)
A 全部定购关系保存在中央MISC系统
B 保存在号码归属省的MISC系统
C 保存在移动计费系统
D 保存在SP平台
15 SPOA短信业务资料的业务处理地址内容是(A)
A PROVISION接口地址
B SP网站主页地址
C SP网站主页地址
D 短信业务SSO地址
16 如果一个用户已经定制了业务,再次发送定制业务指令,会出现的情况是:(D)
A SP再次收到定制请求 B MISC提示用户错误
C MISC提示SP错误 D MISC会把信息作为普通信息透传给SP
17 短信业务代码最长的长度是(B)
A 6位 B 10位 C 15位 D 20位
18 SP网站在梦网频道的首页上需要以iframe方式内嵌一个登录提示页面,该页面链接指向:(D)
A 用户归属地的SSO平台 B SP所在省的SSO平台
C 服务接入地的SSO平台 D 中央SSO平台
19 在服务订购接口中,当用户需要同时订购多个服务时,接口参数中以什么符号分隔多个服务之间的ICPCode和ICPServID:(A)
A 逗号 B 分号 C 管道符 D 反斜杠
20 反向订购接口协议中Send_Address标签中的DeviceType字段应该填什么内容:(B)
A 200 B 400 C 100 D 0
21 向订购接口协议中Dest_Address标签中的DeviceID字段代表什么意思?(B)
A 网关设备编号 B MISC设备编号 C SP的企业代码 D 其它设备编号
22 正向同步PROVISION包中的ActionID为()表示“开通服务”?(A )
A 1 B 2 C 3 D 4
23 反向订购、取消包中的TransactionID长度不能超过()位?(B)
A 15 B 16 C 17 D 18
24 短信业务申请中,业务处理地址的作用:(C)
A 没有作用
B 提供给MISC跟踪业务信息的地址
C MISC给SP同步该业务的订购关系的访问地址
D SP的门户网站链接地址
25 如何获得登录SP自服务系统的登录账号和密码? (D)
A 打电话给移动公司管理员获得
B 打电话给卓望公司SP接入工程师获得
C 发邮件给移动公司管理员获得
D 通过SP自服务系统首页的“注册SP帐号”功能在线获得登录账号和密码
26 目前服务代码是多少位?(C)
A 5 位 B 6位 C 8位 D 7位
27 SP严禁在()的情况下向客户提供服务。(A)
A 客户不知情 B 客户知情
C 强制定制 D 匿名聊天
28 SP限制每客户的群发数量每次不超过2条,每天不超过(D)
A 80条 B 100条 C 150条 D 200条
29 ()是企业生命所在。(B)
A 员工 B 客户 C 分销商 D SP
30 强制定购是指:(A)
A SP未征得客户同意,擅自给客户订购业务的行为
B SP向用户收取高于订购业务价格的费用的欺诈行为
C SP提供业务违反定价原则
D 以上都不是
31 客户向移动公司进行投诉,移动公司通过 (D)等系统向SP提供客户投诉工单。
A SPOA B CSS C 公告栏 D A和B
32 SP不能提供(A)作为手机铃声下载。
A 国歌 B 流行音乐 C 民族音乐 D 以上都不行
33 CMPP_Submit函数中Registered_Delivery字段为2时表示?(A)
A 产生SMC话单 B 需要状态报告
C 不需要状态报告 D 不产生SMC话单
34 CMPP_Submit函数中Msg_src字段填写何内容?(B)
A 信息简要 B 企业代码 C 服务号码 D 网关地址
35 CMPP_Submit函数中费率单位为?(C)
A 元 B 角 C 分 D 厘
36 MO是指:( D )
A 发送不成功的信息 B 发送成功的信息
C 由服务端下发的目标请求 D 手机终端发起的源请求
37 企业代码是指( A )
A 企业代码为网络中SP地址和身份的标识,地址翻译、计费、结算等均以企业代码为依据。
B 企业代码只是接入的帐号与其它无关。
C 企业代码是SP接入的号码。
D 企业代码是SP在行业之间的代号
38 CMPP协议的消息头不包括:( D )
A 消息总长度 B 消息类型 C 消息流水号 D 消息状态
39 CMPP协议中Msg_Fmt=8,表示该消息内容为:( A )
A UCS2编码 B 国标汉字 C ASCII编码 D 二进制码
40 CMPP协议中规定一条cmpp_submit消息可以向多个目的手机发送消息,对这个目的手机个数的限制为:( C )
A 10个 B 50个 C 100个 D 1000个
41 CMPP协议中FEE_CODE 的含义?(A )
A 扣费额 B 免费额 C 无效字段 D 同FEE_TYPE
42 SP免费下行报64的错误,原因可能是:( A )
A SP将src_Terminal_Id设成企业代码
B SP将fee_Terminal_type设成 1
C SP将 registered_Delivery设成1
D SP将fee_Terminal_Id设成付费方手机号码
43 SP免费下行时出现-100的错误,原因可能是( A )
A 把付费号码设成伪码 B 把付费号码设成真码
C 把服务号码字段设成了企业代码 D 把企业代码字段设成了服务号码
44 在CMPP协议中,SP请求连接到ISMG,其消息为:( A )
A CMPP_CONNECT B CMPP_TERMINAT
C CMPP_QUERY D CMPP_SUBMIT
45 SP连接梦网网关一般要求采用()连接 ( A )
A 长连接 B 短连接 C 简化的长连接 D、简化的短连接
46 按条计费的信息费资费标准是 。( B )
A、不高于1元/条 B、不高于2元/条
C、 3元/条 D、价格由SP自定
47 CMPP_SUBMIT消息定义中,当当Fee_UserType为3时( A )字段有效
A Fee_terminal_Id B Fee_terminal_type
C TP_udhi D Registered_Delivery
48 非点播类业务的MT流程不使用哪一个字段? ( A )
A LinkID B Msg_Content C Dest_terminal_type D FeeCode
49 CMPP_QUERY_RESP中,消息流向是( A )
A ISMG àSP
B SPàISMG
C SPà ISMG或ISMGàSP
D ISMGà ISMG
50 数据业务管理平台的英文全称为: ( A)
A DSMP B HTTP C SSO D XML
51 下面关于SSO平台与DSMP平台的关系,描述正确的是: (C )
A SSO平台不是用户归属地DSMP的部分功能
B 全网SP不需要到归属的SSO平台做用户登录
C SP需要与接入地的SSO平台连接,完成Session的管理
D 用户订购的信息可存储在DSMP平台,也可存储在SSO平台
52 下面关于SSO平台功能的处理流程中,描述错误的一项是: (D )
A 中央SSO平台提示用户输入手机号码和密码
B DSMP业务平台向中央SSO平台响应用户鉴权;
C 中央SSO平台获得用户手机和密码后,向DSMP平台发起用户鉴权请求
D 中央SSO平台返回收到用户信息后的HTTP成功响应
53 关于用户的签退,下列叙述正确的是: ( A)
A 用户在梦网平台上签退时,SSO平台会返回用户超时通知的响应信息
B 用户在SP站点上签退时,SPA的系统将其上保存的用户Session信息彻底删除
C SSO平台通知中央SSO平台用户签退消息,这是用户在梦网平台上签退
D 用户在梦网平台上签退时,SSO平台从该用户的SESSION中保存的SP LIST 中删除SPA
54 关于用户业务的订购,下面说法错误的是: (B )
A 永久订购关系指用户与该业务之间存在订购关系后,用户可以持久的使用该业务直至用户取消业务为止
B 永久订购关系适用于铃声和图片等业务
C 在业务订购流程中,SSO平台向DSMP平台发起鉴权批价请求
D 在业务订购流程中,SSO平台不会向中央SSO平台发起鉴权批价请求
55 SSO平台向SP 系统提供了四个接口,对接口的描述下列不正确的是: ( D )
A 用户登录是指向SP系统开放DSMP平台用户登录的接口
B 查询用户信息是指向SP系统开放使用监时会话ID查询登录用户信息
C 用户签退是指向SP系统开MISC平台用户签退接口
D A and C
56 AreaID是指用户的归属地ID ,其中广东的编码是:(B )
A 0001 B 0011 C 0017 D 0032
57 SSO平台中用户业务订购与点播所采用的协议是: ( A )
A HTTP B HTTPS C TCP/IP D SOAP
58 SP与MISC的订购通知接口,目前采用的是: ( A )
A MISC 1.6 B MISC1.5 C SSO接口 D A和C
59 在DSMP与SP之间接口消息定中,SyncOrderRelationReq的消息方向是: (A )
A DSMPàSP B SPàDSMP
C ISMG àSP D ISMGà ISMG
60 SyncOrderRelationReq消息字段重要性的描述中,以下哪一个是属于可选的? (A )
A SPID B TransactionID C SPServiceID D Version
61 DSMP 与SP 之间的接口消息中,错误代码为4007代表的含义是: ( D)
A 无效的SPServiceID B 无效的SPID C 无效的msgtype
D MISC同步开通服务,但SP端已存在订购关系,且状态为开通
62 以下不属于CMPP3.0的新增字段是: ( D )
A Fee_terminal_type B Dest_terminal_type
C LinkID D Reserve
63 以下关于正向同步PROVISION接口,描述错误的是: ( D )
A 用户通过手机发送定制或取消指令到相应的SP特服号,网关收到MO消息后向MISC发起MO鉴权批价请求,MISC收到MO鉴权批价请求后进行订购、取消点播指令匹配;如果判断指令是定制或取消指令,则MISC会向SP发送订购关系同步请求包SyncOrderRelationReq
B 用户通过WWW网站发起订购或取消请求,MISC在收到WWW网站的请求之后,会向SP发送订购关系同步请求包SyncOrderRelationReq
C SP收到同步请求包后,对订购请求做相应的订购关系处理,并返回订购关系同步应答SyncOrderRelationResp
D MISC收到应答包后,根据返回结果是否正确,在系统中生成正式的订购关系或者取消订购关系,并由1861系统给用户下发订购成功或取消成功的提醒消息
64 下面关于反向订购接口,描述错误的是: (D )
A SP代替用户,向MISC发起反向订购请求SubscribeServiceReq并等待MISC处理
B MISC对消息中的来源地址、企业代码进行鉴权,判断是否允许该SP进行反向订购, 接入鉴权成功后,再进行用户鉴权和订购关系鉴权,判断用户状态是否正确以及是否是重复订购等
C SP收到同步请求后,对订购请求做相应的订购关系处理,并返回订购关系同步应答SyncOrderRelationResp
D SP如果收到MISC的错误响应,则说明订购失败,SP不必对这个失败消息做相应处理.
65 SubscribeServiceReq消息字段中, TransactionID的长度不能超过( A )位.
A 16位 B 18位 C 15位 D 20位
66 SP在规划指令的时候要注意以下哪些( A )
A 点播、定制、取消指令不能使用保留字进行精确匹配;如果选择模糊匹配,则指令内容不能是保留字的任一包含第一位字符的子串,且不能是以保留字开头的字符串。
B 保留字区分大小写
C 定制指令内容允许为空
D A and B and C
67 如有两个模糊匹配的指令 ‘8001 aa’、‘80011 aa’,当用户发送‘800111 aa’的时候,则会出现(A)
A 匹配到第二条指令,而不是第一条
B 匹配到第一条指令,而不是第二条
C 匹配到两条
D 两条都匹配不到
68 对于点播指令,MISC会生成临时订购关系(LinkID),同时向短信网关返回鉴权成功,并将( A )返回给短信网关,由短信网关将该MO作为点播MO向SP转发
A LinkID B TransactionID C SPID D ResultID
69 对于普通MO短信,MISC向( A )返回鉴权成功的响应,同时通知短信网关将此条短信当作普通MO向SP转发。
A 短信网关 B SP C SSO平台 D 短信中心
70 对于订购指令,MISC将检查该用户是否已订购该服务,如果没有订购,则MISC将会完成订购,同时会将用户MO中的内容通过用户订购关系数据同步接口(Provision接口)传送给SP,在Provision接口中的( A )(base64加密)中将会有用户MO的长号码和指令内容,长号码和指令内容之间以空格符分隔。同时MISC会通知短信网关这是一条订购指令,短信网关将不向SP转发该MO。
A FeatureStr字段 B Src_terminal_Id字段
C Registered_Delivery D Msg_Length
71 在查询用户信息接口请求的参数描述中, ICPPassword是指:(D )
A SP的企业代码 B SP用于标识唯一一次认证请求的号码
C 用户的临时会话标识 D SP的密码
72 下列关于目前业务梳理及改造过程中,描述正确的是: ( D )
A 所有的用户使用指令,包括手机点播和手机定制的指令都是由SP自行设置,网关不做任何处理
B SP根据自身业务推广需要,可以灵活设置不同的业务流程,网关不做限制
C IOD类型业务代码统一设置为:XXXX,PUSH类型业务代码统一设置为:-YYYY,STK类型业务代码设置为:+ZZZZ
D 所有的手机点播和手机定制指令都必须在MISC平台中有数据,每次MO过程MISC都需要根据指令内容和长号码来判断业务
73 在MO指令规划中,目前保留字有: (D )
A cmcctest B china mobile C 00000 D 以上都是
74 包月的业务是必须设置为( A ),否则不能产生包月扣费。
A 定制业务 B 点播业务 C STK点播类 D 帮助信息类
75 前现网上使用的CMPP协议的版本号为:(C )
A、 1.0 B、2.0 C、3.0 D、 4.0
76 点播业务下发最大信息条数是由以下什么限制的 ( D )
A SP业务平台 B 短信网关 C 短信中心 D SPOA业务设置参数
77以下哪个不是SPOA中短信业务的分类 ( D )
A 点播类 B 定制类 C 帮助信息类 D PUSH类
78 接入测试有哪几个,是何次序?(C )
A、计费测试/业务功能测试/网络测试 B、网各测试/业务功能测试/计费测试
C、业务功能测试/计费测试/网络测试 D 以上都不是
79 下那一个是广州地球的短信中心号码 ( A )
A +8613800200500 B、+8613900255000 C、+8613800005000 D、+8613900005000
80 CMPP协议位于 ( B )
A 物理层 B 应用层 C 数据链路层 D 网络层
81 SP资质考试每家公司限报名额:最多( A )。
A 6人/次 B 5人/次 C 4人/次 D 3人/次
82 P泄露中国移动提供的( D )等资料,移动公司有权不予结算。
A 技术规范 B 客户资料 C 号码段和销户号 D 以上都是
83禁止群发短信业务广告是指( D )
A 无须经客户许可,SP可以向注册用户发送移动梦网业务广告
B 无须经客户许可,SP可以向非注册用户发送移动梦网业务广告
C 无须经客户许可,SP向用户发送除移动梦网业务广告外带有宣传推广性质的广告
D 不能未经客户(包括其注册客户和非注册客户)许可,向中国移动客户发送移动梦网业务广告及所有带有宣传推广性质的广告。
84CMPP协议中FEE_CODE 的含义?( A )
A 扣费额 B 免费额 C 无效字段 D 同FEE_TYPE
85SP业务宣传资料应在付印前(),送交省公司确认。( A )
A 5天 B 10天 C 18天 D 20天
86 SP客户服务热线固定电话服务时间:( A )
A 7*24小时 B 6*24小时 C 7*12小时 D 4*24小时
87取消某个SP的所有短信业务,应该发送到服务号是:( C )
A 0000 B 1111 C 00000
88对()考核排名居后5%的SP,中国移动将要求其限期整改,并考虑与其立即停止合作( C )
A 二次 B 一次 C 连续三次 D 三次
89 SUBMIT信息包成功的返回标志为___ ( C )
A -1 B 1 C 0 D OK
90 SSO的中文解释是: ( )
A 数据业务管理平台 B 单点登录
C 超文本传输协议 D 因特网内容提供商
91 在服务标识中,SPID的字段类型是( B )
A INTEGER B STRING C BINARY D INTEJER
92 在相关服务信息中LSPURL的字段描述是( A )
A 定位请求访问地址 B定位请求访问地址口号 C 页面访问地址端口号 D页面访问地址
93在SyncOrderRelationRaq 消息字段ActionReasonID描述正确的是: (A)
A 1: 用户发起行为 B 5:BOSS开机
C 7:BOSS过户 D 3:BOSS 销户
94 在SyncOrderRelationRaq 消息字段AccessMode描述正确的是: (A)
A 1:WEB B 2:SMS C: 3:WAP
95向取消接口的返回值定义中,9001的错误代表的意思是: ( B )
A 网络错误 B 网络异常 C 系统磁盘读写错误
96在 CMPP_CONNECT_RESP的消息定义中,消息方向是: ( A )
A ISMG àSP B SPàISMG C SPà ISMG或ISMGàSP D ISMGà ISMG
97 在 CMPP_CONNECT_RESP的消息定义中,Status的状态描述正确的是: ( C )
A 1:非法源地址 B 2:消息结构错 C 3: 认证错 D 以上都不是
98 在CMPP_SUBMIT消息定义中,Fee_UserTypep字段为计费用户类型字段,下列叙述错误的是: ( C )
A 0:对目的终端MSISDN计费
B 1:对源终端MSISDN计费
C 3:对SP计费
99 在CMPP_SUBMIT消息定义中,FeeType为资费类别,下列描述正确的是: ( C )
A 01: 对“计费用户号码”按条计信息费
B 02:对“计费用户号码”免费
C 03:对“计费用户号码”按包月收取信息费
100 在CMPP_SUBMIT——RESP消息定义中,Result返回值描述正确的是: ( A)
A 0:正确 B 1: 正确 C 2:消息长度错 D 3:命令字错
101 在CMPP_MT_ROUTE_RESP消息定义中,User_type用户类型为0指( A )
A 全球通 B 神州行 C M-ZONE
102 SP接收到SyncOrderRelationReq时,如何判断这是一个手机MO发起的订购请求,还是网上订购发起的请求?(比如在ActionID=1的情况下) ( B )
A 可以通过AccessMode来判断。AccessMode为3表示web方式;为2表示WAP方式;为1表示短信。
B 可以通过AccessMode来判断。AccessMode为1表示web方式;为2表示WAP方式;为3表示短信。
C 可以通过AccessMode来判断。AccessMode为0表示web方式;为1表示WAP方式;为2表示短信。
D 可以通过AccessMode来判断。AccessMode为2表示web方式;为1表示WAP方式;为3表示短信。
103用户欠费停机的时候misc会调用provision“暂停服务”接口暂停在SP订购的服务吗?然后用户重新交费恢复后,misc会再调用provision“激活服务”接口吗?( A )
A 正确 B 错误
104定制类的业务允许包月和按条计费,点播只能按条计费( A )
A 正确 B 错误
105 MO指令分为四种:订购指令、取消指令、点播指令和普通MO。请问点播指令和普通MO的区别是什么?( C )
A 点播指令匹配成功后,MO中有Service_Id但没有linkid值。收到这条MO之后,SP必须用对应的业务代码和linkid才能下发;而普通MO包中的Service_Id和linkid是没有值的,SP在收到这条MO包之后,只能用帮助信息类的业务代码下发。
B 点播指令匹配成功后,MO包中的Service_Id和linkid都会有值。收到这条MO之后,SP必须用对应的业务代码和linkid才能下发;普通MO包中也有Service_Id和linkid,SP在收到这条MO包之后,只能用帮助信息类的业务代码下发。
C 点播指令匹配成功后,MO包中的Service_Id和linkid都会有值。收到这条MO之后,SP必须用对应的业务代码和linkid才能下发;而普通MO包中的Service_Id和linkid是没有值的,SP在收到这条MO包之后,只能用帮助信息类的业务代码下发。
D 点播指令匹配成功后,MO包中的Service_Id和linkid都会有值。收到这条MO之后,SP必须用对应的业务代码和linkid才能下发;而普通MO包中的Service_Id和linkid是没有值的,SP在收到这条MO包之后,可以使用点播类的业务代码下发。
106重复定制和重复取消的MO消息是否传给SP?( D )
A 重复定制的MO指令传给用户,重复取消MO指令不传给用户。
B 重复定制的MO指令传给SP,重复取消MO指令不传给用户。
C 重复定制的MO指令传给用户,重复取消MO指令不传给SP。
D 重复定制的MO指令传给SP,重复取消MO指令不传给SP。
107 MISC出现105的错误,其代表的错误信息是: (C )
A 服务代码错误 B 用户没有订购此业务
C 业务代码错误 D 用户欠费
108 “手机号码不存在”该错误在MISC系统中的错误代码为: ( A )
A 100 B 101 C 107 D 108
109 SP通过哪一接口向MISC进行用户取消服务订购的请求?( B )
A SyncORderRelationReq B UnSubscribeServiceReq
110 在CMPP_GET_MO_ROUTE中,Source_Id 描述的意思( A )
A 源网关代码 B 目的网关代码
C MO路由 D 已经接收的上一条路由编号
111 向客户提供优质服务的过程中,“( B )”是我们基本观点,是我们必须具备的价值观。
A: 不断为客户创造价值
B: 客户永远是对的
C: 让客户120%的满意度
D: 服务第一、盈利第二
112 我公司视( B)为企业之本。
A: 服务
B: 员工
C: 技术
D: 客户
113 我公司视( D )为企业生命。
A: 服务
B: 员工
C: 技术
D: 客户
114广东移动通信的企业精神是:( A 。 )
A: 沟通从心开始
B: 让客户120%满意
C: 追求客户满意服务
D: 客户永远是对的
短信技术试题
一、 选择题:
1、 中国移动梦网业务合作伙伴简称为 (A)
A、 SP B、 CP C、ICP D、 ISP
2、 移动梦网短信各网元之间的消息类型和定义,目前采用 (B)
A CMPP2.0 B CMPP3.0 C CMPP2.1 D CMPP2.3
3、 CMPP的英文全称(C)
A Intenet Short Message Gateway B Data Service Manage Platform
C China Mobile Peer to Peer D Service Provider
4、 以下表明企业代码的是 (A)
A SP_Id B ISMG_Id C SP_Code D Service_Id
5、 CMPP3.0中, SP与网关间的短连接的端口号是以下那一个 (B)
A 7890 B 7900 C 7930 D 9168
6、 Msg_Fmt信息格式中,4代表的意思是(B)
A短信写卡操作 B二进制信息 C UCS2编码 D ASCII串
7、 PROVISION接口正向同步包的actionid为3表示的操作是(B)
A定制业务 B激活业务 C取消业务 D暂停业务
8、 MISC系统返回80102错误表示:(C)
A手机号码不存在 B手机号码错误 C手机号码停机 D手机号码前非
9 、MISC系统返回80107错误表示:(D)
A业务暂停 B业务代码错误 C服务代码错误 D业务不存在
10 MISC系统返回80115错误表示:(A)
A用户没有定购该业务 B 用户暂停该业务
C用户已经定购该业务 D 用户已经取消该业务
11 目前短信点播linkid的存活时间是(B)
A 30分钟 B 60分钟 C 90分钟 D 120分钟
12 本月什么时间点以后定制包月短信业务不出话单 (A)
A 20日 B 21日 C 22日 D 25日
13 短信按条业务信息费率是由哪个系统填写的(D)
A SP业务平台 B短信中心 C 短信网关 D MISC平台
14 以下关于用户定购关系保存哪个是正确的(B)
A 全部定购关系保存在中央MISC系统
B 保存在号码归属省的MISC系统
C 保存在移动计费系统
D 保存在SP平台
15 SPOA短信业务资料的业务处理地址内容是(A)
A PROVISION接口地址
B SP网站主页地址
C SP网站主页地址
D 短信业务SSO地址
16 如果一个用户已经定制了业务,再次发送定制业务指令,会出现的情况是:(D)
A SP再次收到定制请求 B MISC提示用户错误
C MISC提示SP错误 D MISC会把信息作为普通信息透传给SP
17 短信业务代码最长的长度是(B)
A 6位 B 10位 C 15位 D 20位
18 SP网站在梦网频道的首页上需要以iframe方式内嵌一个登录提示页面,该页面链接指向:(D)
A 用户归属地的SSO平台 B SP所在省的SSO平台
C 服务接入地的SSO平台 D 中央SSO平台
19 在服务订购接口中,当用户需要同时订购多个服务时,接口参数中以什么符号分隔多个服务之间的ICPCode和ICPServID:(A)
A 逗号 B 分号 C 管道符 D 反斜杠
20 反向订购接口协议中Send_Address标签中的DeviceType字段应该填什么内容:(B)
A 200 B 400 C 100 D 0
21 向订购接口协议中Dest_Address标签中的DeviceID字段代表什么意思?(B)
A 网关设备编号 B MISC设备编号 C SP的企业代码 D 其它设备编号
22 正向同步PROVISION包中的ActionID为()表示“开通服务”?(A )
A 1 B 2 C 3 D 4
23 反向订购、取消包中的TransactionID长度不能超过()位?(B)
A 15 B 16 C 17 D 18
24 短信业务申请中,业务处理地址的作用:(C)
A 没有作用
B 提供给MISC跟踪业务信息的地址
C MISC给SP同步该业务的订购关系的访问地址
D SP的门户网站链接地址
25 如何获得登录SP自服务系统的登录账号和密码? (D)
A 打电话给移动公司管理员获得
B 打电话给卓望公司SP接入工程师获得
C 发邮件给移动公司管理员获得
D 通过SP自服务系统首页的“注册SP帐号”功能在线获得登录账号和密码
26 目前服务代码是多少位?(C)
A 5 位 B 6位 C 8位 D 7位
27 SP严禁在()的情况下向客户提供服务。(A)
A 客户不知情 B 客户知情
C 强制定制 D 匿名聊天
28 SP限制每客户的群发数量每次不超过2条,每天不超过(D)
A 80条 B 100条 C 150条 D 200条
29 ()是企业生命所在。(B)
A 员工 B 客户 C 分销商 D SP
30 强制定购是指:(A)
A SP未征得客户同意,擅自给客户订购业务的行为
B SP向用户收取高于订购业务价格的费用的欺诈行为
C SP提供业务违反定价原则
D 以上都不是
31 客户向移动公司进行投诉,移动公司通过 (D)等系统向SP提供客户投诉工单。
A SPOA B CSS C 公告栏 D A和B
32 SP不能提供(A)作为手机铃声下载。
A 国歌 B 流行音乐 C 民族音乐 D 以上都不行
33 CMPP_Submit函数中Registered_Delivery字段为2时表示?(A)
A 产生SMC话单 B 需要状态报告
C 不需要状态报告 D 不产生SMC话单
34 CMPP_Submit函数中Msg_src字段填写何内容?(B)
A 信息简要 B 企业代码 C 服务号码 D 网关地址
35 CMPP_Submit函数中费率单位为?(C)
A 元 B 角 C 分 D 厘
36 MO是指:( D )
A 发送不成功的信息 B 发送成功的信息
C 由服务端下发的目标请求 D 手机终端发起的源请求
37 企业代码是指( A )
A 企业代码为网络中SP地址和身份的标识,地址翻译、计费、结算等均以企业代码为依据。
B 企业代码只是接入的帐号与其它无关。
C 企业代码是SP接入的号码。
D 企业代码是SP在行业之间的代号
38 CMPP协议的消息头不包括:( D )
A 消息总长度 B 消息类型 C 消息流水号 D 消息状态
39 CMPP协议中Msg_Fmt=8,表示该消息内容为:( A )
A UCS2编码 B 国标汉字 C ASCII编码 D 二进制码
40 CMPP协议中规定一条cmpp_submit消息可以向多个目的手机发送消息,对这个目的手机个数的限制为:( C )
A 10个 B 50个 C 100个 D 1000个
41 CMPP协议中FEE_CODE 的含义?(A )
A 扣费额 B 免费额 C 无效字段 D 同FEE_TYPE
42 SP免费下行报64的错误,原因可能是:( A )
A SP将src_Terminal_Id设成企业代码
B SP将fee_Terminal_type设成 1
C SP将 registered_Delivery设成1
D SP将fee_Terminal_Id设成付费方手机号码
43 SP免费下行时出现-100的错误,原因可能是( A )
A 把付费号码设成伪码 B 把付费号码设成真码
C 把服务号码字段设成了企业代码 D 把企业代码字段设成了服务号码
44 在CMPP协议中,SP请求连接到ISMG,其消息为:( A )
A CMPP_CONNECT B CMPP_TERMINAT
C CMPP_QUERY D CMPP_SUBMIT
45 SP连接梦网网关一般要求采用()连接 ( A )
A 长连接 B 短连接 C 简化的长连接 D、简化的短连接
46 按条计费的信息费资费标准是 。( B )
A、不高于1元/条 B、不高于2元/条
C、 3元/条 D、价格由SP自定
47 CMPP_SUBMIT消息定义中,当当Fee_UserType为3时( A )字段有效
A Fee_terminal_Id B Fee_terminal_type
C TP_udhi D Registered_Delivery
48 非点播类业务的MT流程不使用哪一个字段? ( A )
A LinkID B Msg_Content C Dest_terminal_type D FeeCode
49 CMPP_QUERY_RESP中,消息流向是( A )
A ISMG àSP
B SPàISMG
C SPà ISMG或ISMGàSP
D ISMGà ISMG
50 数据业务管理平台的英文全称为: ( A)
A DSMP B HTTP C SSO D XML
51 下面关于SSO平台与DSMP平台的关系,描述正确的是: (C )
A SSO平台不是用户归属地DSMP的部分功能
B 全网SP不需要到归属的SSO平台做用户登录
C SP需要与接入地的SSO平台连接,完成Session的管理
D 用户订购的信息可存储在DSMP平台,也可存储在SSO平台
52 下面关于SSO平台功能的处理流程中,描述错误的一项是: (D )
A 中央SSO平台提示用户输入手机号码和密码
B DSMP业务平台向中央SSO平台响应用户鉴权;
C 中央SSO平台获得用户手机和密码后,向DSMP平台发起用户鉴权请求
D 中央SSO平台返回收到用户信息后的HTTP成功响应
53 关于用户的签退,下列叙述正确的是: ( A)
A 用户在梦网平台上签退时,SSO平台会返回用户超时通知的响应信息
B 用户在SP站点上签退时,SPA的系统将其上保存的用户Session信息彻底删除
C SSO平台通知中央SSO平台用户签退消息,这是用户在梦网平台上签退
D 用户在梦网平台上签退时,SSO平台从该用户的SESSION中保存的SP LIST 中删除SPA
54 关于用户业务的订购,下面说法错误的是: (B )
A 永久订购关系指用户与该业务之间存在订购关系后,用户可以持久的使用该业务直至用户取消业务为止
B 永久订购关系适用于铃声和图片等业务
C 在业务订购流程中,SSO平台向DSMP平台发起鉴权批价请求
D 在业务订购流程中,SSO平台不会向中央SSO平台发起鉴权批价请求
55 SSO平台向SP 系统提供了四个接口,对接口的描述下列不正确的是: ( D )
A 用户登录是指向SP系统开放DSMP平台用户登录的接口
B 查询用户信息是指向SP系统开放使用监时会话ID查询登录用户信息
C 用户签退是指向SP系统开MISC平台用户签退接口
D A and C
56 AreaID是指用户的归属地ID ,其中广东的编码是:(B )
A 0001 B 0011 C 0017 D 0032
57 SSO平台中用户业务订购与点播所采用的协议是: ( A )
A HTTP B HTTPS C TCP/IP D SOAP
58 SP与MISC的订购通知接口,目前采用的是: ( A )
A MISC 1.6 B MISC1.5 C SSO接口 D A和C
59 在DSMP与SP之间接口消息定中,SyncOrderRelationReq的消息方向是: (A )
A DSMPàSP B SPàDSMP
C ISMG àSP D ISMGà ISMG
60 SyncOrderRelationReq消息字段重要性的描述中,以下哪一个是属于可选的? (A )
A SPID B TransactionID C SPServiceID D Version
61 DSMP 与SP 之间的接口消息中,错误代码为4007代表的含义是: ( D)
A 无效的SPServiceID B 无效的SPID C 无效的msgtype
D MISC同步开通服务,但SP端已存在订购关系,且状态为开通
62 以下不属于CMPP3.0的新增字段是: ( D )
A Fee_terminal_type B Dest_terminal_type
C LinkID D Reserve
63 以下关于正向同步PROVISION接口,描述错误的是: ( D )
A 用户通过手机发送定制或取消指令到相应的SP特服号,网关收到MO消息后向MISC发起MO鉴权批价请求,MISC收到MO鉴权批价请求后进行订购、取消点播指令匹配;如果判断指令是定制或取消指令,则MISC会向SP发送订购关系同步请求包SyncOrderRelationReq
B 用户通过WWW网站发起订购或取消请求,MISC在收到WWW网站的请求之后,会向SP发送订购关系同步请求包SyncOrderRelationReq
C SP收到同步请求包后,对订购请求做相应的订购关系处理,并返回订购关系同步应答SyncOrderRelationResp
D MISC收到应答包后,根据返回结果是否正确,在系统中生成正式的订购关系或者取消订购关系,并由1861系统给用户下发订购成功或取消成功的提醒消息
64 下面关于反向订购接口,描述错误的是: (D )
A SP代替用户,向MISC发起反向订购请求SubscribeServiceReq并等待MISC处理
B MISC对消息中的来源地址、企业代码进行鉴权,判断是否允许该SP进行反向订购, 接入鉴权成功后,再进行用户鉴权和订购关系鉴权,判断用户状态是否正确以及是否是重复订购等
C SP收到同步请求后,对订购请求做相应的订购关系处理,并返回订购关系同步应答SyncOrderRelationResp
D SP如果收到MISC的错误响应,则说明订购失败,SP不必对这个失败消息做相应处理.
65 SubscribeServiceReq消息字段中, TransactionID的长度不能超过( A )位.
A 16位 B 18位 C 15位 D 20位
66 SP在规划指令的时候要注意以下哪些( A )
A 点播、定制、取消指令不能使用保留字进行精确匹配;如果选择模糊匹配,则指令内容不能是保留字的任一包含第一位字符的子串,且不能是以保留字开头的字符串。
B 保留字区分大小写
C 定制指令内容允许为空
D A and B and C
67 如有两个模糊匹配的指令 ‘8001 aa’、‘80011 aa’,当用户发送‘800111 aa’的时候,则会出现(A)
A 匹配到第二条指令,而不是第一条
B 匹配到第一条指令,而不是第二条
C 匹配到两条
D 两条都匹配不到
68 对于点播指令,MISC会生成临时订购关系(LinkID),同时向短信网关返回鉴权成功,并将( A )返回给短信网关,由短信网关将该MO作为点播MO向SP转发
A LinkID B TransactionID C SPID D ResultID
69 对于普通MO短信,MISC向( A )返回鉴权成功的响应,同时通知短信网关将此条短信当作普通MO向SP转发。
A 短信网关 B SP C SSO平台 D 短信中心
70 对于订购指令,MISC将检查该用户是否已订购该服务,如果没有订购,则MISC将会完成订购,同时会将用户MO中的内容通过用户订购关系数据同步接口(Provision接口)传送给SP,在Provision接口中的( A )(base64加密)中将会有用户MO的长号码和指令内容,长号码和指令内容之间以空格符分隔。同时MISC会通知短信网关这是一条订购指令,短信网关将不向SP转发该MO。
A FeatureStr字段 B Src_terminal_Id字段
C Registered_Delivery D Msg_Length
71 在查询用户信息接口请求的参数描述中, ICPPassword是指:(D )
A SP的企业代码 B SP用于标识唯一一次认证请求的号码
C 用户的临时会话标识 D SP的密码
72 下列关于目前业务梳理及改造过程中,描述正确的是: ( D )
A 所有的用户使用指令,包括手机点播和手机定制的指令都是由SP自行设置,网关不做任何处理
B SP根据自身业务推广需要,可以灵活设置不同的业务流程,网关不做限制
C IOD类型业务代码统一设置为:XXXX,PUSH类型业务代码统一设置为:-YYYY,STK类型业务代码设置为:+ZZZZ
D 所有的手机点播和手机定制指令都必须在MISC平台中有数据,每次MO过程MISC都需要根据指令内容和长号码来判断业务
73 在MO指令规划中,目前保留字有: (D )
A cmcctest B china mobile C 00000 D 以上都是
74 包月的业务是必须设置为( A ),否则不能产生包月扣费。
A 定制业务 B 点播业务 C STK点播类 D 帮助信息类
75 前现网上使用的CMPP协议的版本号为:(C )
A、 1.0 B、2.0 C、3.0 D、 4.0
76 点播业务下发最大信息条数是由以下什么限制的 ( D )
A SP业务平台 B 短信网关 C 短信中心 D SPOA业务设置参数
77以下哪个不是SPOA中短信业务的分类 ( D )
A 点播类 B 定制类 C 帮助信息类 D PUSH类
78 接入测试有哪几个,是何次序?(C )
A、计费测试/业务功能测试/网络测试 B、网各测试/业务功能测试/计费测试
C、业务功能测试/计费测试/网络测试 D 以上都不是
79 下那一个是广州地球的短信中心号码 ( A )
A +8613800200500 B、+8613900255000 C、+8613800005000 D、+8613900005000
80 CMPP协议位于 ( B )
A 物理层 B 应用层 C 数据链路层 D 网络层
81 SP资质考试每家公司限报名额:最多( A )。
A 6人/次 B 5人/次 C 4人/次 D 3人/次
82 P泄露中国移动提供的( D )等资料,移动公司有权不予结算。
A 技术规范 B 客户资料 C 号码段和销户号 D 以上都是
83禁止群发短信业务广告是指( D )
A 无须经客户许可,SP可以向注册用户发送移动梦网业务广告
B 无须经客户许可,SP可以向非注册用户发送移动梦网业务广告
C 无须经客户许可,SP向用户发送除移动梦网业务广告外带有宣传推广性质的广告
D 不能未经客户(包括其注册客户和非注册客户)许可,向中国移动客户发送移动梦网业务广告及所有带有宣传推广性质的广告。
84CMPP协议中FEE_CODE 的含义?( A )
A 扣费额 B 免费额 C 无效字段 D 同FEE_TYPE
85SP业务宣传资料应在付印前(),送交省公司确认。( A )
A 5天 B 10天 C 18天 D 20天
86 SP客户服务热线固定电话服务时间:( A )
A 7*24小时 B 6*24小时 C 7*12小时 D 4*24小时
87取消某个SP的所有短信业务,应该发送到服务号是:( C )
A 0000 B 1111 C 00000
88对()考核排名居后5%的SP,中国移动将要求其限期整改,并考虑与其立即停止合作( C )
A 二次 B 一次 C 连续三次 D 三次
89 SUBMIT信息包成功的返回标志为___ ( C )
A -1 B 1 C 0 D OK
90 SSO的中文解释是: ( )
A 数据业务管理平台 B 单点登录
C 超文本传输协议 D 因特网内容提供商
91 在服务标识中,SPID的字段类型是( B )
A INTEGER B STRING C BINARY D INTEJER
92 在相关服务信息中LSPURL的字段描述是( A )
A 定位请求访问地址 B定位请求访问地址口号 C 页面访问地址端口号 D页面访问地址
93在SyncOrderRelationRaq 消息字段ActionReasonID描述正确的是: (A)
A 1: 用户发起行为 B 5:BOSS开机
C 7:BOSS过户 D 3:BOSS 销户
94 在SyncOrderRelationRaq 消息字段AccessMode描述正确的是: (A)
A 1:WEB B 2:SMS C: 3:WAP
95向取消接口的返回值定义中,9001的错误代表的意思是: ( B )
A 网络错误 B 网络异常 C 系统磁盘读写错误
96在 CMPP_CONNECT_RESP的消息定义中,消息方向是: ( A )
A ISMG àSP B SPàISMG C SPà ISMG或ISMGàSP D ISMGà ISMG
97 在 CMPP_CONNECT_RESP的消息定义中,Status的状态描述正确的是: ( C )
A 1:非法源地址 B 2:消息结构错 C 3: 认证错 D 以上都不是
98 在CMPP_SUBMIT消息定义中,Fee_UserTypep字段为计费用户类型字段,下列叙述错误的是: ( C )
A 0:对目的终端MSISDN计费
B 1:对源终端MSISDN计费
C 3:对SP计费
99 在CMPP_SUBMIT消息定义中,FeeType为资费类别,下列描述正确的是: ( C )
A 01: 对“计费用户号码”按条计信息费
B 02:对“计费用户号码”免费
C 03:对“计费用户号码”按包月收取信息费
100 在CMPP_SUBMIT——RESP消息定义中,Result返回值描述正确的是: ( A)
A 0:正确 B 1: 正确 C 2:消息长度错 D 3:命令字错
101 在CMPP_MT_ROUTE_RESP消息定义中,User_type用户类型为0指( A )
A 全球通 B 神州行 C M-ZONE
102 SP接收到SyncOrderRelationReq时,如何判断这是一个手机MO发起的订购请求,还是网上订购发起的请求?(比如在ActionID=1的情况下) ( B )
A 可以通过AccessMode来判断。AccessMode为3表示web方式;为2表示WAP方式;为1表示短信。
B 可以通过AccessMode来判断。AccessMode为1表示web方式;为2表示WAP方式;为3表示短信。
C 可以通过AccessMode来判断。AccessMode为0表示web方式;为1表示WAP方式;为2表示短信。
D 可以通过AccessMode来判断。AccessMode为2表示web方式;为1表示WAP方式;为3表示短信。
103用户欠费停机的时候misc会调用provision“暂停服务”接口暂停在SP订购的服务吗?然后用户重新交费恢复后,misc会再调用provision“激活服务”接口吗?( A )
A 正确 B 错误
104定制类的业务允许包月和按条计费,点播只能按条计费( A )
A 正确 B 错误
105 MO指令分为四种:订购指令、取消指令、点播指令和普通MO。请问点播指令和普通MO的区别是什么?( C )
A 点播指令匹配成功后,MO中有Service_Id但没有linkid值。收到这条MO之后,SP必须用对应的业务代码和linkid才能下发;而普通MO包中的Service_Id和linkid是没有值的,SP在收到这条MO包之后,只能用帮助信息类的业务代码下发。
B 点播指令匹配成功后,MO包中的Service_Id和linkid都会有值。收到这条MO之后,SP必须用对应的业务代码和linkid才能下发;普通MO包中也有Service_Id和linkid,SP在收到这条MO包之后,只能用帮助信息类的业务代码下发。
C 点播指令匹配成功后,MO包中的Service_Id和linkid都会有值。收到这条MO之后,SP必须用对应的业务代码和linkid才能下发;而普通MO包中的Service_Id和linkid是没有值的,SP在收到这条MO包之后,只能用帮助信息类的业务代码下发。
D 点播指令匹配成功后,MO包中的Service_Id和linkid都会有值。收到这条MO之后,SP必须用对应的业务代码和linkid才能下发;而普通MO包中的Service_Id和linkid是没有值的,SP在收到这条MO包之后,可以使用点播类的业务代码下发。
106重复定制和重复取消的MO消息是否传给SP?( D )
A 重复定制的MO指令传给用户,重复取消MO指令不传给用户。
B 重复定制的MO指令传给SP,重复取消MO指令不传给用户。
C 重复定制的MO指令传给用户,重复取消MO指令不传给SP。
D 重复定制的MO指令传给SP,重复取消MO指令不传给SP。
107 MISC出现105的错误,其代表的错误信息是: (C )
A 服务代码错误 B 用户没有订购此业务
C 业务代码错误 D 用户欠费
108 “手机号码不存在”该错误在MISC系统中的错误代码为: ( A )
A 100 B 101 C 107 D 108
109 SP通过哪一接口向MISC进行用户取消服务订购的请求?( B )
A SyncORderRelationReq B UnSubscribeServiceReq
110 在CMPP_GET_MO_ROUTE中,Source_Id 描述的意思( A )
A 源网关代码 B 目的网关代码
C MO路由 D 已经接收的上一条路由编号
111 向客户提供优质服务的过程中,“( B )”是我们基本观点,是我们必须具备的价值观。
A: 不断为客户创造价值
B: 客户永远是对的
C: 让客户120%的满意度
D: 服务第一、盈利第二
112 我公司视( B)为企业之本。
A: 服务
B: 员工
C: 技术
D: 客户
113 我公司视( D )为企业生命。
A: 服务
B: 员工
C: 技术
D: 客户
114广东移动通信的企业精神是:( A 。 )
A: 沟通从心开始
B: 让客户120%满意
C: 追求客户满意服务
D: 客户永远是对的
[3] 更新施用 达内笔记网上看到 记录下以后用
来源: 互联网 发布时间: 2014-02-18
更新应用 达内笔记网上看到 记录下以后用
达内android开发笔记(12):Android应用的自动升级、更新模块的实现
我们看到很多Android应用都具有自动更新功能,用户一键就可以完成软件的升级更新。得益于Android系统的软件包管理和安装机制,这一功能实现起来相当简单,下面我们就来实践一下。首先给出界面效果:
1. 准备知识
在AndroidManifest.xml里定义了每个Android apk的版本标识:
package="com.myapp"
android:versionCode="1"
android:versionName="1.0.0">
复制代*
其中,android:versionCode和android:versionName两个字段分别表示版本代*,版本名称。versionCode是整型数字,versionName是字符串。由于version是给用户看的,不太容易比较大小,升级检查时,可以以检查versionCode为主,方便比较出版本的前后大小。
那么,在应用中如何读取AndroidManifest.xml中的versionCode和versionName呢?可以使用PackageManager的API,参考以下代*:
public static int getVerCode(Context context) {
int verCode = -1;
try {
verCode = context.getPackageManager().getPackageInfo(
"com.myapp", 0).versionCode;
} catch (NameNotFoundException e) {
Log.e(TAG, e.getMessage());
}
return verCode;
}
public static String getVerName(Context context) {
String verName = "";
try {
verName = context.getPackageManager().getPackageInfo(
"com.myapp", 0).versionName;
} catch (NameNotFoundException e) {
Log.e(TAG, e.getMessage());
}
return verName;
}
复制代*
或者在AndroidManifest中将android:versionName="1.2.0"写成android:versionName="@string/app_versionName",然后在values/strings.xml中添加对应字符串,这样实现之后,就可以使用如下代*获得版本名称:
public static String getVerName(Context context) {
String verName = context.getResources()
.getText(R.string.app_versionName).toString();
return verName;
}
复制代*
同理,apk的应用名称可以这样获得:
public static String getAppName(Context context) {
String verName = context.getResources()
.getText(R.string.app_name).toString();
return verName;
}
复制代*
2. 流程框架
3. 版本检查
在服务端放置最新版本的apk文件,如:http://localhost/myapp/myapp.apk
同时,在服务端放置对应此apk的版本信息调用接口或者文件,如:http://localhost/myapp/ver.json
ver.json中的内容为:
[{"appname":"jtapp12","apkname":"jtapp-12-updateapksamples.apk","verName":1.0.1,"verCode":2}]
复制代*
然后,在手机客户端上进行版本读取和检查:
private boolean getServerVer () {
try {
String verjson = NetworkTool.getContent(Config.UPDATE_SERVER
+ Config.UPDATE_VERJSON);
JSONArray array = new JSONArray(verjson);
if (array.length() > 0) {
JSONObject obj = array.getJSONObject(0);
try {
newVerCode = Integer.parseInt(obj.getString("verCode"));
newVerName = obj.getString("verName");
} catch (Exception e) {
newVerCode = -1;
newVerName = "";
return false;
}
}
} catch (Exception e) {
Log.e(TAG, e.getMessage());
return false;
}
return true;
}
复制代*
比较服务器和客户端的版本,并进行更新*作。
if (getServerVerCode()) {
int vercode = Config.getVerCode(this); // 用到前面第一节写的方法
if (newVerCode > vercode) {
doNewVersionUpdate(); // 更新新版本
} else {
notNewVersionShow(); // 提示当前为最新版本
}
}
复制代*
详细方法:
private void notNewVersionShow() {
int verCode = Config.getVerCode(this);
String verName = Config.getVerName(this);
StringBuffer sb = new StringBuffer();
sb.append("当前版本:");
sb.append(verName);
sb.append(" Code:");
sb.append(verCode);
sb.append(",/n已是最新版,无需更新!");
Dialog dialog = new AlertDialog.Builder(Update.this).setTitle("软件更新")
.setMessage(sb.toString())// 设置内容
.setPositiveButton("确定",// 设置确定按钮
new DialogInte***ce.OnClickListener() {
@Override
public void onClick(DialogInte***ce dialog,
int which) {
finish();
}
}).create();// 创建
// 显示对话框
dialog.show();
}
private void doNewVersionUpdate() {
int verCode = Config.getVerCode(this);
String verName = Config.getVerName(this);
StringBuffer sb = new StringBuffer();
sb.append("当前版本:");
sb.append(verName);
sb.append(" Code:");
sb.append(verCode);
sb.append(", 发现新版本:");
sb.append(newVerName);
sb.append(" Code:");
sb.append(newVerCode);
sb.append(", 是否更新?");
Dialog dialog = new AlertDialog.Builder(Update.this)
.setTitle("软件更新")
.setMessage(sb.toString())
// 设置内容
.setPositiveButton("更新",// 设置确定按钮
new DialogInte***ce.OnClickListener() {
@Override
public void onClick(DialogInte***ce dialog,
int which) {
pBar = new ProgressDialog(Update.this);
pBar.setTitle("正在下载");
pBar.setMessage("请稍候...");
pBar.setProgressStyle(ProgressDialog.STYLE_SPINNER);
downFile(Config.UPDATE_SERVER + Config.UPDATE_APKNAME);
}
})
.setNegativeButton("暂不更新",
new DialogInte***ce.OnClickListener() {
public void onClick(DialogInte***ce dialog,
int whichButton) {
// 点击"取消"按钮之后退出程序
finish();
}
}).create();// 创建
// 显示对话框
dialog.show();
}
复制代*
4. 下载模块
注,本部分参考了前人的相关实现,
http://www.apkbus.com/android-14576-1-1.html
void downFile(final String url) {
pBar.show();
new Thread() {
public void run() {
HttpClient client = new DefaultHttpClient();
HttpGet get = new HttpGet(url);
HttpResponse response;
try {
response = client.execute(get);
HttpEntity entity = response.getEntity();
long length = entity.getContentLength();
InputStream is = entity.getContent();
FileOutputStream fileOutputStream = null;
if (is != null) {
File file = new File(
Environment.getExternalStorageDirectory(),
Config.UPDATE_SAVENAME);
fileOutputStream = new FileOutputStream(file);
byte[] buf = new byte[1024];
int ch = -1;
int count = 0;
while ((ch = is.read(buf)) != -1) {
fileOutputStream.write(buf, 0, ch);
count += ch;
if (length > 0) {
}
}
}
fileOutputStream.flush();
if (fileOutputStream != null) {
fileOutputStream.close();
}
down();
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}.start();
}
复制代*
下载完成,通过handler通知主ui线程将下载对话框取消。
void down() {
handler.post(new Runnable() {
public void run() {
pBar.cancel();
update();
}
});
}
复制代*
5. 安装应用
void update() {
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.fromFile(new File(Environment
.getExternalStorageDirectory(), Config.UPDATE_SAVENAME)),
"application/vnd.android.package-archive");
startActivity(intent);
}
复制代*
果你将apk应用发布到market上,那么,你会发现market内建了类似的模块,可以自动更新或者提醒你是否更新应用。那么,对于你自己的应用需要自动更新的话,自己内建一个是不是更加方便了呢?本文提到的代*大多是在UpdateActivity.java中实现,为了能够使更新过程更加友好,可以在最初launcher的Activity中建立一个线程,用来检查服务端是否有更新。有更新的时候就启动UpdateActivity,这样的使用体验更加平滑。
达内android开发笔记(12):Android应用的自动升级、更新模块的实现
我们看到很多Android应用都具有自动更新功能,用户一键就可以完成软件的升级更新。得益于Android系统的软件包管理和安装机制,这一功能实现起来相当简单,下面我们就来实践一下。首先给出界面效果:
1. 准备知识
在AndroidManifest.xml里定义了每个Android apk的版本标识:
package="com.myapp"
android:versionCode="1"
android:versionName="1.0.0">
复制代*
其中,android:versionCode和android:versionName两个字段分别表示版本代*,版本名称。versionCode是整型数字,versionName是字符串。由于version是给用户看的,不太容易比较大小,升级检查时,可以以检查versionCode为主,方便比较出版本的前后大小。
那么,在应用中如何读取AndroidManifest.xml中的versionCode和versionName呢?可以使用PackageManager的API,参考以下代*:
public static int getVerCode(Context context) {
int verCode = -1;
try {
verCode = context.getPackageManager().getPackageInfo(
"com.myapp", 0).versionCode;
} catch (NameNotFoundException e) {
Log.e(TAG, e.getMessage());
}
return verCode;
}
public static String getVerName(Context context) {
String verName = "";
try {
verName = context.getPackageManager().getPackageInfo(
"com.myapp", 0).versionName;
} catch (NameNotFoundException e) {
Log.e(TAG, e.getMessage());
}
return verName;
}
复制代*
或者在AndroidManifest中将android:versionName="1.2.0"写成android:versionName="@string/app_versionName",然后在values/strings.xml中添加对应字符串,这样实现之后,就可以使用如下代*获得版本名称:
public static String getVerName(Context context) {
String verName = context.getResources()
.getText(R.string.app_versionName).toString();
return verName;
}
复制代*
同理,apk的应用名称可以这样获得:
public static String getAppName(Context context) {
String verName = context.getResources()
.getText(R.string.app_name).toString();
return verName;
}
复制代*
2. 流程框架
3. 版本检查
在服务端放置最新版本的apk文件,如:http://localhost/myapp/myapp.apk
同时,在服务端放置对应此apk的版本信息调用接口或者文件,如:http://localhost/myapp/ver.json
ver.json中的内容为:
[{"appname":"jtapp12","apkname":"jtapp-12-updateapksamples.apk","verName":1.0.1,"verCode":2}]
复制代*
然后,在手机客户端上进行版本读取和检查:
private boolean getServerVer () {
try {
String verjson = NetworkTool.getContent(Config.UPDATE_SERVER
+ Config.UPDATE_VERJSON);
JSONArray array = new JSONArray(verjson);
if (array.length() > 0) {
JSONObject obj = array.getJSONObject(0);
try {
newVerCode = Integer.parseInt(obj.getString("verCode"));
newVerName = obj.getString("verName");
} catch (Exception e) {
newVerCode = -1;
newVerName = "";
return false;
}
}
} catch (Exception e) {
Log.e(TAG, e.getMessage());
return false;
}
return true;
}
复制代*
比较服务器和客户端的版本,并进行更新*作。
if (getServerVerCode()) {
int vercode = Config.getVerCode(this); // 用到前面第一节写的方法
if (newVerCode > vercode) {
doNewVersionUpdate(); // 更新新版本
} else {
notNewVersionShow(); // 提示当前为最新版本
}
}
复制代*
详细方法:
private void notNewVersionShow() {
int verCode = Config.getVerCode(this);
String verName = Config.getVerName(this);
StringBuffer sb = new StringBuffer();
sb.append("当前版本:");
sb.append(verName);
sb.append(" Code:");
sb.append(verCode);
sb.append(",/n已是最新版,无需更新!");
Dialog dialog = new AlertDialog.Builder(Update.this).setTitle("软件更新")
.setMessage(sb.toString())// 设置内容
.setPositiveButton("确定",// 设置确定按钮
new DialogInte***ce.OnClickListener() {
@Override
public void onClick(DialogInte***ce dialog,
int which) {
finish();
}
}).create();// 创建
// 显示对话框
dialog.show();
}
private void doNewVersionUpdate() {
int verCode = Config.getVerCode(this);
String verName = Config.getVerName(this);
StringBuffer sb = new StringBuffer();
sb.append("当前版本:");
sb.append(verName);
sb.append(" Code:");
sb.append(verCode);
sb.append(", 发现新版本:");
sb.append(newVerName);
sb.append(" Code:");
sb.append(newVerCode);
sb.append(", 是否更新?");
Dialog dialog = new AlertDialog.Builder(Update.this)
.setTitle("软件更新")
.setMessage(sb.toString())
// 设置内容
.setPositiveButton("更新",// 设置确定按钮
new DialogInte***ce.OnClickListener() {
@Override
public void onClick(DialogInte***ce dialog,
int which) {
pBar = new ProgressDialog(Update.this);
pBar.setTitle("正在下载");
pBar.setMessage("请稍候...");
pBar.setProgressStyle(ProgressDialog.STYLE_SPINNER);
downFile(Config.UPDATE_SERVER + Config.UPDATE_APKNAME);
}
})
.setNegativeButton("暂不更新",
new DialogInte***ce.OnClickListener() {
public void onClick(DialogInte***ce dialog,
int whichButton) {
// 点击"取消"按钮之后退出程序
finish();
}
}).create();// 创建
// 显示对话框
dialog.show();
}
复制代*
4. 下载模块
注,本部分参考了前人的相关实现,
http://www.apkbus.com/android-14576-1-1.html
void downFile(final String url) {
pBar.show();
new Thread() {
public void run() {
HttpClient client = new DefaultHttpClient();
HttpGet get = new HttpGet(url);
HttpResponse response;
try {
response = client.execute(get);
HttpEntity entity = response.getEntity();
long length = entity.getContentLength();
InputStream is = entity.getContent();
FileOutputStream fileOutputStream = null;
if (is != null) {
File file = new File(
Environment.getExternalStorageDirectory(),
Config.UPDATE_SAVENAME);
fileOutputStream = new FileOutputStream(file);
byte[] buf = new byte[1024];
int ch = -1;
int count = 0;
while ((ch = is.read(buf)) != -1) {
fileOutputStream.write(buf, 0, ch);
count += ch;
if (length > 0) {
}
}
}
fileOutputStream.flush();
if (fileOutputStream != null) {
fileOutputStream.close();
}
down();
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}.start();
}
复制代*
下载完成,通过handler通知主ui线程将下载对话框取消。
void down() {
handler.post(new Runnable() {
public void run() {
pBar.cancel();
update();
}
});
}
复制代*
5. 安装应用
void update() {
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.fromFile(new File(Environment
.getExternalStorageDirectory(), Config.UPDATE_SAVENAME)),
"application/vnd.android.package-archive");
startActivity(intent);
}
复制代*
果你将apk应用发布到market上,那么,你会发现market内建了类似的模块,可以自动更新或者提醒你是否更新应用。那么,对于你自己的应用需要自动更新的话,自己内建一个是不是更加方便了呢?本文提到的代*大多是在UpdateActivity.java中实现,为了能够使更新过程更加友好,可以在最初launcher的Activity中建立一个线程,用来检查服务端是否有更新。有更新的时候就启动UpdateActivity,这样的使用体验更加平滑。
最新技术文章: