折腾:
【未解决】通过调试rcsjta中core的入口Provisioning去寻找服务启动的逻辑
期间的调试:
【记录】调试rcsjta的core的apk点击保存按钮触发Provisioning的onOptionsItemSelected相关代码调用逻辑
现在看起来:
其中一种合法的name是:
086开头的手机号?
不过,注意到app中写了:

IMS name,看来就是 聊天系统所支持的 能找到合法的用户的一种写法
而IMS display name,看起来就是普通的 用于显示的文字而已
所以:
需要去搞懂此处的IMS name的写法,是不是上面说的
- SIP-URI
- Tel-URI
- SIP address
中的一种。
去继续深入研究代码中的逻辑之前,还是去回顾之前的各种rcsjta的文档,尤其是和合法的账号account 应该如何写 会不会有新思路,看看是否有新发现:
【记录】继续研究rcsjta相关文档和RCS相关资料
比之前更加深入的了解了RCS的方方面面
现在继续看代码,之后有空再回去看资料
此处的
IMS authentication(procedure for Mobile access)
中欧冠的
IMS authentication
感觉或许应该就是:
IMS/SIP – RCS/RCS-e
中提到的:
也顺带去看看,认证方式,除了DIGEST,还有哪些:

可以看出共有:
- IMS认证过程(针对移动端手机访问)
- GIBA
- DIGEST
-》看来需要先去简单研究一下,2种认证方式的含义和区别才可以。:
【已解决】rcsjta项目RCS中IMS认证方式GIBA和DIGEST区别
然后目前有所了解:
- IMS系统
- 用户标识
- 支持多种方式
- 其中有IMPI和IMPU,都是一种URI
- 具体来说
- 以是数字:Tel URI
- 举例
- tel: +1-555-123-4567
- 也可以是字符标识符SIP URI
- 举例:
->
- SIP-URI
- 举例
- sip:john.doe@example.com
- Tel-URI
- tel: +1-555-123-4567
- SIP address
- ?
现在已清楚了:
此处是新手机,有SIM卡,应该用:(基于HTTP的SIP协议的)DIGEST去认证
然后具体账号,看看如何写。
如果用SIP URI的话,还要知道具体的domain域名才行
简单起见,换用Tel的URI,只需要有电话号码,就可以了。
感觉此处可以写成:
tel: +86-xxx
还是?
tel: +86-xxx
先不管,先去试试
填写好:

去点击保存,触发调试,然后发现是
至少能识别 tel:开头的账号的:

过滤后,就是手机号了。
继续调试,strip后
src/main/java/com/gsma/services/rcs/contact/ContactUtil.java
1 2 3 4 5 | public boolean isValidContact(String contact) throws RcsPermissionDeniedException { if (TextUtils.isEmpty(contact)) { return false ; } String strippedContact = stripSeparators(contact); |
是
+86xxx
且是:
1 | COUNTRY_CODE_PREFIX=‘+' |
开头的,所以是:合法的账号
继续去formatContact
然后可以顺利保存:
1 2 3 | mHelper.saveContactIdEditText(R. id .ImsUsername, RcsSettingsData.USERPROFILE_IMS_USERNAME); mHelper.saveStringEditText(R. id .ImsDisplayName, RcsSettingsData.USERPROFILE_IMS_DISPLAY_NAME); |
IMS的username和displayname
至此,即可。
转载请注明:在路上 » 【已解决】搞懂rcsjta的core的Provisioning中IMS name合法用户账号的写法和逻辑