1、OMCAP介绍
OMACP(Open Mobile Alliance Client Provisioning)是一种通过短信或OTA(Over the Air)方式更新手机网络配置的协议。具体来说,OMACP消息是通过短信发送的,这些消息包含连接到数据服务所需的网络特定设置,例如APN(Access Point Name)设置、MMS消息服务器、代理地址、浏览器主页和书签、邮件服务器等。
2 、OMACP的支持情况
2.1、MTK平台支持情况
MTK平台默认支持OMACP(Open Mobile Alliance Client Provisioning)
OMACP version:V1.1
2.2、接收不到OMACP问题如何分析?
(1)先确定贵司是否开启了OMACP功能
贵司项目 ProjectConfig.mk中,MTK_OMACP_SUPPORT = yes 则为开启,默认一般为开启的
另外check如下属性
(2)通过mtklog/mobilelog/APLog 下的radiolog, 搜索 CMT 看相应时间点framework是否收到omacp
有:说明手机底层接收到了OMACP,可能是AP处理不当导致没有显示给user,请在mtklog/mobilelog/APLog/mainlog 搜omacp先看看log,
对应的source code在vendor/mediatek/proprietary/packages/apps/Omacp 一般贵司自己结合code和log能分析出结论。
若有必要,可以提交eservice,附上mtklog让敝司协助分析。
无: 可能是运营商没有发给手机,需要check对比机行为,以及对比机和测试机之间的差异(比如:SIM卡、测试时间地点步骤、IMEI等)
也可能贵司把AT命令输出log的地方关掉了; 需要在radiolog再搜索InboundSmsHandler,看是否有类似于以下log出现:
10:01:00.343 1540 1740 D GsmInboundSmsHandler: dispatch wap push pdu with addr & sc addr
10:01:00.388 1540 1740 D GsmInboundSmsHandler: dispatchWapPdu() returned -1
如果能找到相关trace,则按照有CMT的情况来处理。 如果还是没有,可以确定就是运营商没有发给手机,那么可能影响的因素有:IMEI、SIM卡、UAProfile,请贵司分别改成与对比机一致再测试。若还接收不到,请咨询运营商。
(3)如果贵司没有预置com.android.mms, 而是使用其他app,比如:com.google.android.apps.messaging
通常能在radiolog、syslog或者eventslog搜到以下trace
10-20 18:38:55.819994 1331 1435 V WAP PUSH: Delivering MMS to: com.google.android.apps.messaging com.google.android.apps.messaging.shared.receiver.MmsWapPushDeliverReceiver
10-20 18:38:55.894428 1124 5878 V ActivityManager: Broadcast: Intent { act=android.provider.Telephony.WAP_PUSH_RECEIVED typ=application/vnd.wap.connectivity-wbxml flg=0x18000010 (has extras) } ordered=true userid=0 callerApp=ProcessRecord{ebcf32a 1331:com.android.phone/1001}
10-20 18:38:55.896742 1124 1140 W PackageManager: checkPermission(): android.permission.RECEIVE_WAP_PUSH of com.mediatek.omacp is denied
请在测试前,先进设置、apps,找到omacp,把相应的权限勾上。 然后在
/vendor/mediatek/proprietary/packages/apps/Omacp/src/com/mediatek/omacp/message/OmacpMessageNotification.java
自行修改updateNotification 方法里面的内容,目的是把与com.android.mms、com.android.mms_preferences相关的逻辑去掉,以免报错(omacp是MTK设计的,搭配mtkmms,所以目前只有预置了mms不会报错)
3、WAP PUSH 介绍
WAP PUSH又叫做服务信息或推入信息,是一种特殊格式的短信。可以参考WAP PUSH的解析
WAP PUSH解析(1)——SMS PDU编码_wappush 和sms-CSDN博客
WAP PUSH短信,注意两点
TP-UDHI:为1 指示USERDATA有其他扩展
ELT APPLICATION PORT端口:2948 指示为WAP PUSH
可以通过此网站来解析短信PDU
Online SMS PDU Decoder/Converter | Diafaan SMS Server
4、OMACP格式
OMACP 是WAP PUSH的一种特殊的短信,短信的内容有很多种,比如APN配置样本可参考MTK FAQ13612
[DESCRIPTION]
有些客户需要提供mms apn的xml文件进行测试
[SOLUTION]
如下是样本,还请根据自身实际需求调整:
For Example(Mms Apn):
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE wap-provisioningdoc PUBLIC "-//WAPFORUM//DTD PROV 1.0//EN" "http://www.wapforum.org/DTD/prov.dtd">
<wap-provisioningdoc version="1.1">
<characteristic type="BOOTSTRAP">
<parm name="NAME" value="WAP y MMS"/>
<!parm name="PROVURL" value="http://www.mediatek.com/"/>
<parm name="CONTEXT-ALLOW" value="0"/>
<parm name="PROXY-ID" value=""/>
</characteristic>
<characteristic type="PXLOGICAL">
<parm name="PROXY-ID" value="id4"/>
<parm name="NAME" value="MMS"/>
<characteristic type="PXPHYSICAL">
<parm name="PHYSICAL-PROXY-ID" value="id4"/>
<parm name="PXADDR" value="10.0.0.172"/>
<parm name="PXADDRTYPE" value="IPV4"/>
<parm name="TO-NAPID" value="ap4"/>
<characteristic type="PORT">
<parm name="PORTNBR" value="80"/>
</characteristic>
</characteristic>
</characteristic>
<characteristic type="NAPDEF">
<parm name="NAPID" value="ap4"/>
<parm name="BEARER" value="GSM-GPRS"/>
<parm name="NAME" value="mediatek彩信 (China Mobile)"/>
<parm name="NAP-ADDRESS" value="mediatekcmwap"/>
<parm name="NAP-ADDRTYPE" value="APN"/>
</characteristic>
<characteristic type="APPLICATION">
<parm name="APPID" value="w4"/>
<parm name="NAME" value="mms"/>
<parm name="ADDR" value="http://mmsc.monternet.com"/>
<parm name="TO-PROXY" value="id4"/>
<parm name="CM" value="R"/>
</characteristic>
</wap-provisioningdoc>
5、MTK支持那些OMACP配置
参考FAQ09453
[DESCRIPTION]
MTK方案中Omacp的协议版本,还有MTK Omacp目前可以支持的配置内容
[SOLUTION]
1.MTK 方案中Omacp的协议版本是V1.1
2.MTK Omacp目前支持的配置内容可以在如下路径找到所有支持的Capability
alps\mediatek\packages\apps\Omacp\src\com\mediatek\omacp\message\OmacpApplicationCapability.java