目前市面上APP有很多第三方推送,如个推、极光、腾讯信鸽、百度云推送、友盟推送、云巴推送等,还有厂商系统级的推送,比如小米推送、华为推送,这个就很像iOS系统的APNs消息推送,可以做到不管你的APP是否在线,都能把消息推送到你的手机。

飘易手上的一个项目是基于html5 plus做的app项目,利用Hbuilder在线云端打包,集成了小米推送,怎么集成暂且不提,飘易只说一说安卓手机如何在消息到达的时候,自定义铃声。

根据小米官方文档,在服务器端创建消息时可以设置自定义铃声:

调用Message.Builder类的extra(String key, String value)方法将key设置为"sound_uri",value设置为铃声的URI。

铃声只能使用当前app内的资源,URI格式满足 android.resource://your packagename/XXX/XXX。

铃声文件放在Android app的raw目录下。

只适用于通知栏消息。

存储的声音文件需要有扩展名,但是不要把扩展名写在uri中。private Message buildMessage() throws Exception {

String PACKAGENAME = "com.xiaomi.mipushdemo";

String messagePayload = “This is a message”;

String title = “notification title”;

String description = “notification description”;

Message message = new Message.Builder()

.title(title)

.description(description).payload(messagePayload)

.restrictedPackageName(MY_PACKAGE_NAME)

.passThrough(0)  //消息使用通知栏方式

.notifyType(1)

.extra(Constants.EXTRA_PARAM_SOUND_URI, "android.resource://" + PACKAGENAME + "/raw/shaking")

.build();

return message;

}

很明显,小米要求我们把自定义铃声放置在Android APP项目根目录的 res/raw/ 文件夹里。注意这个目录不能有子文件夹。而我使用的是Hbuilder云端打包,云端打包并没有办法添加 res/raw 文件夹里面的声音资源,咨询 hbuilder 官方DCloud,答复说暂时还不支持此功能,后续补充。

好吧。难道只能离线打包?为了一个铃声,要把所有引用的sdk重新在本地部署一遍?改动太大,还是算了。

灵光一现,飘易想到另一个思路:继续云端打包,下载打包好的 apk 文件,我们进行反编译,在反编译后的res目录下添加raw文件夹,往里面添加音频文件,比如 shakingmp3.mp3 和 shakingaac.aac 两个音频。然后再编译成新的apk包,再将这个新apk包进行重新签名!

按照上面的思路走了一遍,发现果然好使!别问我为什么会想到,我是不会告诉你的。

下面飘易来带你们踩坑。。。

坑1:我刚开始不想反编译,直接把apk改成zip,然后往里面添加声音文件,同时删除原有的apk签名(删除里面的META-INF目录),然后重新改成apk后缀,再进行签名,不幸地失败了。

原因很简单,你直接添加资源,可是和资源关联的文件你并没有更新,是哪几个关联文件呢,客官请参考:

res/raw资源关联文件:D:\Android\Jinyiyun_test\app\build\generated\source\r\debug\net\jinyiyun\app\jinyiyun_test\R.java

D:\Android\Jinyiyun_test\app\build\intermediates\symbols\debug\R.txt

D:\Android\Jinyiyun_test\app\build\intermediates\classes\debug\net\jinyiyun\app\jinyiyun_test\R$raw.class

别问我怎么知道的,我是不会告诉你的。

坑2:嗯,还是算了,不让你们掉坑里去了,直接介绍正确的解锁姿势。

1、先安装 apktool 工具(前提是你电脑上已经安装好了java环境)

安装地址:https://ibotpeaches.github.io/Apktool/install/ 它也有github地址:https://github.com/iBotPeaches/Apktool 随便你们用哪个,按照介绍:Windows:

下载 apktool.bat 和 apktool.jar 把这2文件放到一个目录下。

2、反编译apk包apktool d bar.apk

这个命令会把 bar.apk 解压到同名目录bar里面。

3、在bar目录里找到res文件夹下,创建 raw 子文件夹,往里面添加音频文件,比如上面的  shakingmp3.mp3 和 shakingaac.aac 两个音频。

4、重新编译新apk包apktool b bar -o new_bar.apk

这个命令会将bar目录重新编译成一个新的 new_bar.apk 包。

5、这个时候你拿到的新的apk包 并不能在手机上安装,你需要重新签名。

签名的工具是利用java自带的 jarsigner.exe 工具,命令是:"C:\Program Files\Java\jdk1.8.0_45\bin\jarsigner.exe" -verbose -keystore "D:\Android\Android_key.keystore" -signedjar "D:\TOOL\Apktool\signed.apk" "D:\TOOL\Apktool\new_bar.apk" Developer

输入上述命令后,需要确认你当初生成keystore时设置的密码。

注意:

最后的Developer是你生成密钥时使用的 别名。

Android_key.keystore 是你生成的密钥(用java自带的 keytool 生成后缀为keystore的签名密钥)。

signed.apk 是签名后的安卓包,这个包就可以安装啦。

剩下的活就是服务器端的事了,直接贴一段代码吧:<?php

public function Android_message($msg_title, $msg_content, $payload = ''){

// message 消息

$message = new Builder();

$message->title($msg_title);  // 通知栏的title,长度小于16,中英文均以一个计算

$message->description($msg_content); // 通知栏的descption,长度小于128,中英文均以一个计算

$message->passThrough(0);  // 这是一条通知栏消息,如果需要透传,把这个参数设置成1,同时去掉title和descption两个参数

if(!empty($payload)) $message->payload($payload); // 携带的数据,点击后将会通过客户端的receiver中的onReceiveMessage方法传入。

$message->extra(Builder::notifyForeground, 1); // 应用在前台是否展示通知,如果不希望应用在前台时候弹出通知,则设置这个参数为0

$message->extra(Builder::notifyEffect, 1); // 此处设置预定义点击行为,1为打开app

$notify_Id = mt_rand(1,9999);

$message->notifyId($notify_Id); // 通知类型。最多支持0-4 5个取值范围(新版本支持10000个分类),同样的类型的通知会互相覆盖,不同类型可以在通知栏并存

$message->notifyType(-1); //设置通知类型,type的值可以是DEFAULT_ALL或者以下其他几种的OR组合:DEFAULT_ALL = -1; | DEFAULT_SOUND  = 1; 使用默认提示音提示 | DEFAULT_VIBRATE = 2; 使用默认震动提示 | DEFAULT_LIGHTS = 4; 使用默认led灯光提示

$message->extra("sound_uri", "android.resource://" . config("mipush.package_name") . "/raw/shakingaac");//自定义消息铃声:只适用于通知栏消息,铃声文件放在Android app的raw目录下,存储的声音文件需要有扩展名,但是不要把扩展名写在uri中

$message->build();

//返回

return $message;

}

好了,大功告成,又可以愉快地玩耍了,你们可以把私藏的骚浪贱的铃声推送到手机上了,别问我为什么知道,我是不会告诉你的。

app推送以及提示音java,APP集成小米消息推送自定义铃声设置相关推荐

  1. app推送以及提示音java,springboot 整合 Jpush 极光推送

    产品简介: JPush 是经过考验的大规模 App 推送平台,每天推送消息数超过 5 亿条. 开发者集成 SDK 后,可以通过调用 API 推送消息.同时,JPush 提供可视化的 web 端控制台发 ...

  2. 【Java集成小米消息推送(海外版)】

    Java集成小米消息推送(海外版) 注册登录: 小米推送运营中心 提交需要的信息,一般为包名等信息(或直接让Android开发提交) 需要的配置信息 1.App Secret 2.Package na ...

  3. java设置铃声_APP集成小米消息推送自定义铃声设置

    正 文: 目前市面上APP有很多第三方推送,如个推.极光.腾讯信鸽.百度云推送.友盟推送.云巴推送等,还有厂商系统级的推送,比如小米推送.华为推送,这个就很像iOS系统的APNs消息推送,可以做到不管 ...

  4. Java 集成小米消息推送

    一:添加依赖(是本地项目maven 仓库) <dependency>             <groupId>com.xiaomipush.sdk</groupId&g ...

  5. JAVA集成unipush消息推送uniapp

    Springboot集成 pom文件引入相关jar包 <!-- https://mvnrepository.com/artifact/com.getui.push/restful-sdk --& ...

  6. java服务端集成极光消息推送--详细开发步骤

    1.极光推送账号准备 要使用极光消息推送必须先在官方网站上注册账号,并添加应用. 产品介绍:https://docs.jiguang.cn/jpush/guideline/intro/ 注册开发者账号 ...

  7. 应用集成小米华为推送问题总结

    应用集成小米华为推送问题总结 前言 华为角标 华为小米点击通知栏指定intent问题 华为小米清除离线通知栏问题 前言 最近在做推送相关的事情,总体来讲就是希望一个IM类的应用达到离线可以收到推送的效 ...

  8. 微信小程序消息推送自有服务器无法接收到信息,消息推送服务器配置次数用完的解决方式。

    问题描述:消息推送自有服务器无法接收到信息,消息推送服务器配置次数用完! 解决方向:自有服务器无法接收信息的排错,消息推送配置的次数用完的解决方式. 适合版本:微信所有版本(2020.4.16) 关于 ...

  9. 友盟 集成到 java web_友盟消息推送SDK集成

    1.创建应用 在友盟有账号的情况下(没有的请自行创建),创建应用之前需要去苹果开发者网站申请一个App ID和配置一个用于推送的APNs证书,下载并安装APNs推送证书后,打开钥匙串从这个证书导出一个 ...

最新文章

  1. 浅析企业自助建站系统的特性
  2. chrome手机模拟器显示尺寸不正确
  3. Lucene.net站内搜索—5、搜索引擎第一版实现
  4. html 实现列表组并排,列表组--自定义列表组
  5. 从Memcache转战Redis,聊聊缓存使用填过的“坑”
  6. python 参数解析器_Python中最好用的命令行参数解析工具
  7. hadoop搭建之hadoop安装
  8. 阶乘计算升级版 (20分)_求1!+2!+3!+...+20!的和
  9. UART通讯协议(四)数据接收帧间隔
  10. 双机热备_配置BAS叠加NAT双机热备示例
  11. 15.MongoDB的一致性(读关注与写关注)
  12. 一个火车上遇到的女孩所引发的联想
  13. 远程桌面客户端管理器RDCMan
  14. appfuse mysql_Appfuse:起步
  15. APICloud 实现文档下载和预览功能
  16. 深入理解:面向服务与微服务架构
  17. 干货|建模3D Max中常见问题
  18. C++编译为动态链接库并用python调用
  19. 只有快递单号,怎样查询物流进度查看正在派件的单号
  20. 2022年全国职业技能大赛-网络系统管理竞赛-网络模块-Ruijie-AC-SSH

热门文章

  1. 以太网OAM三兄弟-EFM、CFM和Y.1731
  2. linux mii 网卡驱动,网卡驱动8-MII接口以及linux内核对MII的支持
  3. whoosh mysql_Whoosh例子
  4. 教育大数据挖掘--菜鸟入门
  5. @NotNull中groups的作用
  6. Linux系统编程-信号入门3
  7. 2013-6 阿里技术沙龙:标签生成与推荐系统
  8. 简单瞎搞题 动态规划的优化
  9. HHUOJ 1014 火眼金睛
  10. oracle数据库移动平均均线,Moving Average(MA移动平均线)