在android中通过推送通知发送音频文件
在android中是否可以发送音频文件作为推送通知?我想做的是,用户可以将自己的语音记录为一条消息,然后将该消息作为推送通知发送给该应用程序的所有用户。有可能吗?根据下面的文档,CGM/C2DM/推送通知只能发送4KB的数据,所以您不能通过推送通知发送音频文件 “应用程序可以使用“具有有效负载的邮件”来传递高达4 Kb的邮件” 但您可以发送任何音频文件的http url,在移动应用程序中将通过cgm消息接收音频文件链接,并使用http连接下载音频文件在android中通过推送通知发送音频文件,android,push-notification,Android,Push Notification,在android中是否可以发送音频文件作为推送通知?我想做的是,用户可以将自己的语音记录为一条消息,然后将该消息作为推送通知发送给该应用程序的所有用户。有可能吗?根据下面的文档,CGM/C2DM/推送通知只能发送4KB的数据,所以您不能通过推送通知发送音频文件 “应用程序可以使用“具有有效负载的邮件”来传递高达4 Kb的邮件” 但您可以发送任何音频文件的http url,在移动应用程序中将通过cgm消息接收音频文件链接,并使用http连接下载音频文件 我希望上面的描述能有所帮助另一种方法是使用
我希望上面的描述能有所帮助另一种方法是使用一个已经为您实现了此功能的模块。从技术上讲,您可以执行与本文描述的完全相同的操作,但是只需对mBlox这样的提供者进行一次API调用(http://developer.mblox.com),您将能够发布您的内容和您想要定位的设备,内容的托管以及到URL的转换正在为您完成,以及发送实际的推送通知
同样,从技术上讲,这与前面的答案相同,但是,对于您的个人集成来说,这可能是一种更快进入市场的方式 有一种方法,我们可以从FCM发送数据中的音频url。之后,我们可以解析并发送到另一个活动 在FIREBASE服务中
JSONObject object = null;
try {
String data = remoteMessage.getData().toString();
Map<String, String> params = remoteMessage.getData();
object = new JSONObject(params);
} catch (Exception e) {
Log.e("FCM err 1", e.getMessage());
}
sendNotification(this, remoteMessage.getNotification().getBody(), remoteMessage.getNotification().getTitle(), remoteMessage.getNotification().getClickAction(), object);
活跃
Intent intent = getIntent();
Bundle bundle = intent.getExtras();
String url;
if(bundle != null){
url = bundle.getString("url");
MediaPlayer mediaplayer = new MediaPlayer();
try {
mediaplayer.setDataSource(url);
mediaplayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mediaplayer.prepareAsync();
mediaplayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
mediaplayer.start();
}
});
} catch (IOException e) {
e.printStackTrace();
}
}
你为什么不把重新编码的文件放在你的服务器上,然后发送链接呢
Intent intent = getIntent();
Bundle bundle = intent.getExtras();
String url;
if(bundle != null){
url = bundle.getString("url");
MediaPlayer mediaplayer = new MediaPlayer();
try {
mediaplayer.setDataSource(url);
mediaplayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mediaplayer.prepareAsync();
mediaplayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
mediaplayer.start();
}
});
} catch (IOException e) {
e.printStackTrace();
}
}