如何在 Android + GCM 中获得带有声音 + 自定义应用程序图标的推送通知

Posted

技术标签:

【中文标题】如何在 Android + GCM 中获得带有声音 + 自定义应用程序图标的推送通知【英文标题】:How to get a push notification with sound + custom app icon in Android + GCM 【发布时间】:2017-06-26 11:57:11 【问题描述】:

我正在为一个学校项目构建一个聊天应用程序。到目前为止一切正常。所以我能够通过 GCM 获得推送通知。但那些只是默默地显示。你能帮我弄清楚如何用声音(默认声音足够好)和我自己的应用程序图标来制作它们吗?

编辑:不可能使用 Firebase。我们必须为项目使用 GCM。

您可以在下面看到我处理通知的代码。谢谢。

    NotificationHandler notificationHandler = new NotificationHandler(getApplicationContext());

    //If the app is in foreground
    if (!NotificationHandler.isAppIsInBackground(getApplicationContext())) 
        //Sending a broadcast to the chatroom to add the new message
        LocalBroadcastManager.getInstance(this).sendBroadcast(pushNotification);
     else 
        //If app is not in foreground displaying push notification
        notificationHandler.showNotificationMessage(title, message);
    

【问题讨论】:

试试***.com/questions/2618182/…或***.com/questions/10335057/… 建议:使用 FCM 和通知构建器构建来构建通知 @Shubham 我应该提到我必须使用 GCM,因为学校服务器只能使用它。感谢您的建议 通过以下链接可以获得通知中的振动、声音、灯光和图标代码......***.com/questions/44569808/… 您能添加一个您要发送的示例负载吗? 【参考方案1】:

试试这个,它对我有用

protected void displayNotification(Context context, String[] strContent) 
        try 
            int numMessages = 0;

            /* Invoking the default notification service */
            NotificationCompat.Builder  mBuilder = new NotificationCompat.Builder(this);

            mBuilder.setContentTitle("New "+strContent[0].trim());
            mBuilder.setContentText("You've received new "+strContent[0].trim());
            mBuilder.setTicker("New "+strContent[0].trim()+" Alert!");
            mBuilder.setSmallIcon(R.drawable.ic_notif);
            mBuilder.setAutoCancel(true);
            mBuilder.setColor(context.getResources().getColor(R.color.ColorPrimary));
            mBuilder.setVisibility(Notification.VISIBILITY_PUBLIC);
            mBuilder.setDefaults(Notification.DEFAULT_ALL);
            mBuilder.setVibrate(new long[] 1000, 1000, 1000, 1000, 1000);         

            mBuilder.setLights(Color.RED, 3000, 3000);
         mBuilder.setNumber(++numMessages);

        NotificationCompat.InboxStyle inboxStyle = new NotificationCompat.InboxStyle();

            String[] events = new String[strContent.length-1];
            for(int i=0; i<strContent.length-1; i++)
                events[i] = new String(strContent[i+1].trim());
            

            inboxStyle.setBigContentTitle("New "+strContent[0].trim()+" received!");

            for (int i=0; i < events.length; i++) 
                inboxStyle.addLine(events[i]);
            

            mBuilder.setStyle(inboxStyle);

            /* Creates an explicit intent for an Activity in your app */
            Intent resultIntent = new Intent(this, HomeActivity.class);


            TaskStackBuilder stackBuilder = TaskStackBuilder.create(this);
            stackBuilder.addParentStack(HomeActivity.class);

            /* Adds the Intent that starts the Activity to the top of the stack */
            stackBuilder.addNextIntent(resultIntent);
            PendingIntent resultPendingIntent =stackBuilder.getPendingIntent(0,PendingIntent.FLAG_UPDATE_CURRENT);

            mBuilder.setContentIntent(resultPendingIntent);
            NotificationManager mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);

            /* notificationID allows you to update the notification later on. */
            mNotificationManager.notify(9999, mBuilder.build());
         catch (Exception e) 
            // TODO: handle exception
            e.printStackTrace();
        
    

【讨论】:

以上是关于如何在 Android + GCM 中获得带有声音 + 自定义应用程序图标的推送通知的主要内容,如果未能解决你的问题,请参考以下文章

如何在推送通知 (GCM) android 中发送图像?

使用自定义声音向 android 发送 GCM 推送通知

使用 GCM 的 iOS 自定义推送通知声音

如何使用 asp.net 获得 GCM 注册 ID?

使用 c# .net 发送带有图像的 GCM 推送通知(适用于 android 应用程序)

带有 GCM 的 iOS 推送通知