Skip to content

百度云推送

cheyiliu edited this page Oct 16, 2014 · 8 revisions

sdk version

概念

  • tag 即主题, add tag就是订阅主题, del tag就是取消订阅

key api,详见sdk中相关文档

  • PushManager, 增加删除tag, 绑定取消绑定, 设置通知样式等
  • FrontiaPushMessageReceiver, 增加删除tag, 绑定取消绑定和消息获取的回调

库中组件通信方式

  • 从key api看出,组件间通信至少采用了广播

库结构

  • pushservice-4.2.0.63.jar + libbdpush_V2_2.so

  • pushservice-4.2.0.63.jar里面还包含了一个plugin-deploy.jar,里面包含有一个.dex,反编译之(dex2jar)得完整库结构

  • 完整库结构: libbdpush_V2_2.so --jni包装--> plugin-deploy.jar --再次包装--> pushservice-4.2.0.63.jar

    • pushservice-4.2.0.63.jar 的功能是向应用层提供api,各种调用转发到plugin-deploy.jar,故代码基本没混淆。
    • plugin-deploy.jar 的功能貌似不少,简单通过包名等猜测如下:
      • 静默升级? silentupdate
      • 信息统计,StatisticXXX
      • other xxx, 代码混淆的比较厉害
      • com.baidu.android.pushservice.jni

    public static native int closeSocket(int paramInt);

    public static native int createSocket(String paramString, int paramInt);

    public static native int getLastSocketError();

    private static native byte[] rcvMsg(int paramInt);

    public static native int sendMsg(int paramInt1, byte[] paramArrayOfByte, int paramInt2);

    private static native byte[] getSsoHashNative(Context paramContext, String paramString1, String paramString2, String paramString3, String paramString4, String paramString5, long paramLong);

    private static final native byte[] nativeB64Encode(byte[] paramArrayOfByte); ```

note

  • 终端api中无推送消息接口,这样只能从后台管理端发送消息
  • 用jd-jui查看sdk提供的jar包,没搜到native关键字,why? 答案在plugin-deploy.jar
  • TODO 这个库结构很有意思,如何做到的呢??? (1. dx --dex --output=plugin-deploy_dex.jar plugin-deploy.jar, 2. 再将plugin-deploy_dex.jar放入 pushservice-4.2.0.63的android工程assets目录并export)
Clone this wiki locally