记一次sharedUserId引起的友盟推送无效问题

记一次sharedUserId引起的友盟推送无效问题

一、项目背景

应用于车载设备的广告终端App,集成于系统应用apk;有新的产品需求,初期调研时使用友盟推送sdk,在手机端以及在普通apk模式的时候,接入推送正常无误;后续直接开发对应推送业务逻辑,直到QA测试阶段,发现问题;

二、问题描述

  • 作为普通apk时,AndroidManifest中配置和普通手机apk模式一样,接入友盟sdk,6.2.x,也是最新版了(2021/04/26)按照官方文档,接入正常,服务端发送推送(通知,消息,透传)都是可以的。

  • 将apk改为系统rom签名的,同时配置AndroidManifest中android:sharedUserId="android.ui.system"之后,也就是将app和系统应用一个权限了。

    此时,运行apk,友盟的进程 :channel是存活的,但是后端推送消息,无法接收到,不论是友盟官方推送,还是api调用方式,都无效;

    • 同时会有warn警告日志Calling a method in the system process without a qualified user,这个是ContextImpl中警报的,可查看源码,(2280行,似乎是)并没有return拦截掉流程,也就是说,这个warn不会影响运行;
    • 上述警告的原因在于,系统uid的应用自身调用activity、service、broadcast的时候,会有这个警报;经自写demo测试,会出现这个警报问题,但不影响程序。
    • 上一条中,如果service、receiver等尚未启动过,则其他进程调用是无效的;这个是核心!

三、问题分析排查

如上定位问题概述,是由于apk配置了sharedUserId引起友盟推送sdk收不到消息,内部核心实质很难排查,友盟的sdk是混淆的,调试起来相当费时;

断断续续一周多,都在反复验证和调试定位问题,可以大致结论:

  • 友盟推送sdk(项目所指版本)在sharedUserId模式下,App运行起来后,其后台的长链接是通的,推送下发的指令信息应该也是到达sdk终端的;
  • sdk终端内部会解析信息,有专门的service服务,receiver来重构解码后的数据给客户端apk;
  • 经反复对比排查验证试验,上一条所指解析数据的receiver或service应该是没有启动成功(在sharedUserId模式下),所以其他进程调用该服务也是无效的。(见第二条的最后一个点描述)

四、问题解决方案

  1. 经对比,腾讯推送无此问题,可以替换业务方案;

  2. 变相的,复杂的解决方案

    1. 创建一个非sharedUserId的sub apk,集成友盟的推送,并处理相关消息指令
    2. 主apk与sub可以用进程间通信aidl或者广播也行,交换信息,使得主apk响应到推送指令

    副作用,这样就要考虑把sub及时启动,并设法保持存活进程;(可通过主apk的启动调用,定时轮训存活状态等);

    如此对比直接内嵌sdk来说,业务复杂,推送到达率不能保证了。

  3. 类似于上一条,sub apk也是集成友盟推送sdk,主apk也集成,并且推送消息逻辑在主apk内完成;

    要求点,sub中的友盟推送的service和receiver指定的process为单独的,而非:chanel带冒号的那种子进程;

    主Apk中的友盟推送service和receiver也是指定process和sub的一样;

    这样启动sub就会启动推送process,也变相启动了主apk的推送process,就能接受不了到信息了。(原因在第二条的最后一点)

后记:如上仅为指定友盟推送sdk的版本,在特定rom上,作为系统应用apk的场景下遇到的问题;分析排查的原因总结,也未必抓住了问题的本质核心。这里作为笔记,以留后验。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,772评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,458评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,610评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,640评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,657评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,590评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,962评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,631评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,870评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,611评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,704评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,386评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,969评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,944评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,179评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,742评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,440评论 2 342

推荐阅读更多精彩内容