透明购
透明购
  • 发布:2016-02-23 14:21
  • 更新:2021-05-26 21:04
  • 阅读:7884

[android端] 用百度推送替换个推推送,js端继续使用官方api。

分类:5+ SDK

项目github地址、jar包下载地址

  1. 介绍
    ===

    • 这是一个dcloud集成百度推送的教程(android端)。
    • 这是一个离线打包配置的教程。
    • 本项目用百度推送去替换dcloud默认集成的个推推送,使修改对于web层是完全透明的,也就是说js端的推送逻辑基本不用做修改。
  2. 使用
    ===

    • 按照dcloud官方教程集成个推推送。
    • 下载百度推送sdk,导入sdk中的jar包和so文件,so文件只需导入armeabi、armeabi-v7a、x86文件夹下的。
    • 删除个推jar包GetuiSdk2.5.0.0.jar、GetuiExt-2.0.3.jar、aps-igexin.jar,导入本项目libs目录中的baidu-gexing.jar。
    • 在AndroidManifest.xml中注释掉个推推送的所有配置,添加以下配置:
      
      <!-- baidu push开始 -->  

<!-- 用于操作本地创建的通知 -->
<receiver android:name="io.dcloud.feature.aps.NotificationReceiver" >
<!-- 如下配置用于处理推送消息 -->
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
<action android:name="cn.tomygo.app.v2.CREATE_NOTIFICATION" />
<action android:name="cn.tomygo.app.v2.__REMOVE_NOTIFICATION" />
<action android:name="cn.tomygo.app.v2.
CLEAR_NOTIFICATION" />
<action android:name="cn.tomygo.app.v2.__CLILK_NOTIFICATION" />
</intent-filter>
</receiver>

<!-- 原本用于个推的配置,同样用于百度推送 -->
<meta-data
android:name="PUSH_APPID"
android:value="填写你的appid" />
<meta-data
android:name="PUSH_APPKEY"
android:value="填写你的appkey" />
<meta-data
android:name="PUSH_APPSECRET"
android:value="填写你的appsecret" />

<!-- Push service 运行需要的权限 -->
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_DOWNLOAD_MANAGER"/>
<uses-permission android:name="android.permission.DOWNLOAD_WITHOUT_NOTIFICATION" />
<uses-permission android:name="android.permission.DISABLE_KEYGUARD" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.EXPAND_STATUS_BAR" />

<!-- 4.6版本新增的Activity声明,提升Push后台存活率 -->  
<activity  
    android:name="com.baidu.android.pushservice.PushKeepAlive"  
    android:theme="@android:style/Theme.Translucent.NoTitleBar"/>  

<!-- push service start -->  
<!-- 用于接收系统消息以保证PushService正常运行 -->  
<receiver android:name="com.baidu.android.pushservice.PushServiceReceiver"  
    android:process=":bdservice_v1" >  
    <intent-filter>  
    <action android:name="android.intent.action.BOOT_COMPLETED" />  
    <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />  
    <action android:name="com.baidu.android.pushservice.action.notification.SHOW" />  
    <action android:name="com.baidu.android.pushservice.action.media.CLICK" />  
    <!-- 以下四项为可选的action声明,可大大提高service存活率和消息到达速度 -->  
    <action android:name="android.intent.action.MEDIA_MOUNTED" />  
    <action android:name="android.intent.action.USER_PRESENT" />  
    <action android:name="android.intent.action.ACTION_POWER_CONNECTED" />  
    <action android:name="android.intent.action.ACTION_POWER_DISCONNECTED" />  
    </intent-filter>  
</receiver>  
<!-- Push服务接收客户端发送的各种请求-->  
<receiver android:name="com.baidu.android.pushservice.RegistrationReceiver"  
    android:process=":bdservice_v1" >  
    <intent-filter>  
    <action android:name="com.baidu.android.pushservice.action.METHOD" />  
    <action android:name="com.baidu.android.pushservice.action.BIND_SYNC" />  
    </intent-filter>  
    <intent-filter>  
    <action android:name="android.intent.action.PACKAGE_REMOVED" />  
    <data android:scheme="package" />  
    </intent-filter>                     
</receiver>  
<service android:name="com.baidu.android.pushservice.PushService" android:exported="true"   
    android:process=":bdservice_v1" >  
    <intent-filter >  
        <action android:name="com.baidu.android.pushservice.action.PUSH_SERVICE" />  
    </intent-filter>  
</service>  
<!-- 4.4版本新增的CommandService声明,提升小米和魅族手机上的实际推送到达率 -->  
<service android:name="com.baidu.android.pushservice.CommandService"  
    android:exported="true" />  

<!-- 此处Receiver名字修改为当前包名路径 -->  
<receiver android:name="io.dcloud.feature.apsGt.MyPushMessageReceiver">  
    <intent-filter>  
    <!-- 接收push消息 -->   
    <action android:name="com.baidu.android.pushservice.action.MESSAGE" />  
    <!-- 接收bind、setTags等method的返回结果-->   
    <action android:name="com.baidu.android.pushservice.action.RECEIVE" />  
    <!-- 接收通知点击事件,和通知自定义内容 -->   
    <action android:name="com.baidu.android.pushservice.action.notification.CLICK" />  
    </intent-filter>  
</receiver>  
<!-- baidu push结束 -->
*  配置完成。  

3.说明  
===  
* 百度中推送的附加字段的内容放在消息对象的payload字段中:
```javascript  
//js打印附加字段  
plus.push.addEventListener( "click", function( msg ) {  
    console.log("附加字段:"+msg.payload);  
}, false );
7 关注 分享
BoredApe 豆花饭 damdmen lhyh 偏方 gadget2k m***@163.com

要回复文章请先登录注册

我不是张三

我不是张三

回复 damdmen :
同问
2021-05-26 21:04
我不是张三

我不是张三

回复 河南dev :
能不能支持自定义铃声呢?
2021-05-26 21:03
河南dev

河南dev

在线帮解决安卓平台,华为小米手机在线和离线推送各种问题,只需帮我头条点点赞,评论,就能获得我的从零到一的完美解决,欢迎加q 476988188
2020-06-03 15:32
4***@qq.com

4***@qq.com

如何集成sdk到项目里呢
2018-04-03 15:50
kaiven

kaiven

能离线收到消息吗?
2016-10-13 10:26
seniafamily

seniafamily

我启动应用提示“打包是未添加push模块”,现在用的是百度推送,这个问题是怎么解决的
2016-03-31 16:13
seniafamily

seniafamily

最后一个receiver修改为当前包名路径,这个包名路径是哪个包名,是androidManifest的package吗
2016-03-31 15:25
damdmen

damdmen

赞啊 没有ios端的么?个推好像不能自定义声音
2016-03-16 15:56