在android中通过推送通知发送音频文件

在android中通过推送通知发送音频文件,android,push-notification,Android,Push Notification,在android中是否可以发送音频文件作为推送通知?我想做的是,用户可以将自己的语音记录为一条消息,然后将该消息作为推送通知发送给该应用程序的所有用户。有可能吗?根据下面的文档,CGM/C2DM/推送通知只能发送4KB的数据,所以您不能通过推送通知发送音频文件 “应用程序可以使用“具有有效负载的邮件”来传递高达4 Kb的邮件” 但您可以发送任何音频文件的http url,在移动应用程序中将通过cgm消息接收音频文件链接,并使用http连接下载音频文件 我希望上面的描述能有所帮助另一种方法是使用

在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();
        }

    }