通知未显示在 Android 设备上。 (Azure 通知中心)

Posted

技术标签:

【中文标题】通知未显示在 Android 设备上。 (Azure 通知中心)【英文标题】:Notification not displaying on android device. (Azure notification hub) 【发布时间】:2019-02-01 13:02:11 【问题描述】:

我正在尝试向我的 android 模拟器发送推送通知。发送通知时,它会收到通知但不显示。

我正在使用此代码来显示它。

void SendNotification(string messageBody)
    
        var intent = new Intent(this, typeof(MainActivity));
        intent.AddFlags(ActivityFlags.ClearTop);
        var pendingIntent = PendingIntent.GetActivity(this, 0, intent, PendingIntentFlags.OneShot);
        NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this)
                                                                .SetContentTitle("FCM Message")
                                                                .SetSmallIcon(Resource.Drawable.icon)
                                                                .SetContentText(messageBody)
                                                                .SetChannelId("my-chanel")
                                                                .SetAutoCancel(true)
                                                                .SetContentIntent(pendingIntent)
                                                                .SetSound(); 

        var notificationManager = NotificationManager.FromContext(this);

        notificationManager.Notify(0, notificationBuilder.Build());
    

但是当收到通知时,什么都没有发生,我的设备日志给了我这个:

[Mono] Assembly Ref addref ODEON.Android[0xa31db5c0] -> System.Core[0xa1f2f900]: 7
[MyFirebaseMsgService] From: 241571420247
[MyFirebaseMsgService] noti: 
[Mono] DllImport searching in: '__Internal' ('(null)').
[Mono] Searching for 'java_interop_jnienv_call_boolean_method'.
[Mono] Probing 'java_interop_jnienv_call_boolean_method'.
[Mono] Found as 'java_interop_jnienv_call_boolean_method'.
[Mono] Assembly Ref addref Xamarin.Android.Support.Compat[0xa31dca60] -> Java.Interop[0xa1f2f780]: 8
[Notification] Use of stream types is deprecated for operations other than volume control
[Notification] See the documentation of setSound() for what to use instead with android.media.AudioAttributes to qualify your playback use case 

谁能告诉我为什么它不显示。 提前致谢!

【问题讨论】:

【参考方案1】:

如果调用了发送通知方法,请使用以下代码显示通知:

        var intent = new Intent(this, typeof(MainActivity));
        intent.AddFlags(ActivityFlags.ClearTop);
        var pendingIntent = PendingIntent.GetActivity(this, 0, intent, PendingIntentFlags.OneShot);

    NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this)
        .SetSmallIcon(Resource.Drawable.ic_stat_ic_notification)
        .SetContentTitle("Title")
        .SetContentText(messageBody)
        .SetAutoCancel(true)
        .SetContentIntent(pendingIntent);

    NotificationManagerCompat notificationManager = NotificationManagerCompat.From(this);
    notificationManager.Notify(0, notificationBuilder.Build());

此外,如果您有 Android V 8+ 设备,我相信您会看到您正在 MainActivity OnCreate 方法中注册通知通道

void CreateNotificationChannel()
    
        if (Build.VERSION.SdkInt < BuildVersionCodes.O)
        
            // Notification channels are new in API 26 (and not a part of the
            // support library). There is no need to create a notification 
            // channel on older versions of Android.
            return;
        

        var channel = new NotificationChannel(CHANNEL_ID, "FCM Notifications", NotificationImportance.Default)
                      
                          Description = "Firebase Cloud Messages appear in this channel"
                      ;

        var notificationManager = (NotificationManager) GetSystemService(NotificationService);
        notificationManager.CreateNotificationChannel(channel);
    

【讨论】:

它说:CHANNEL_ID 在当前上下文中不存在 我在 nexus_galaxy (API 27) 模拟器上运行 频道 id 可以是任何你想要的字符串,只要你需要频道 id 就可以使用类似这样的东西:internal static readonly string CHANNEL_ID = "my_notification_channel"; 它可以工作 (Y) 但现在当我向我的设备发送通知时,我无法在文本中制作动态内容。我如何例如从有效负载中设置 ContentText 感谢,如果您遇到任何问题,请随时回复。

以上是关于通知未显示在 Android 设备上。 (Azure 通知中心)的主要内容,如果未能解决你的问题,请参考以下文章

推送通知未在 Android 上显示

混合应用推送通知图标未在 Android 8 (Oreo) 上显示

Android 推送通知横幅未在某些设备中显示

某些 android 设备未收到 GCM 推送通知

旧的推送通知未出现在 android 设备上

三星Android 7中未显示通知图标