xamarin推送通知问题

时间:2017-02-27 07:07:30

标签: c# xamarin xamarin.forms

您好我正在使用Push Notification Plugin for Xamarin在我的应用中实现推送通知,并且我正在接收推送通知(使用GCM),但问题是我发送新设备时发送到设备的推送通知正在被替换这不是预期的行为,我想显示收到的所有通知,这就是我配置我的Android应用程序的方式

public override void OnCreate()
    {
        base.OnCreate();
        AppContext = this.ApplicationContext;
        CrossPushNotification.NotificationContentTextKey = "message";
        CrossPushNotification.NotificationContentTitleKey = "contentTitle";
        CrossPushNotification.NotificationContentDataKey = "data";
        CrossPushNotification.Initialize<CrossPushNotificationListener>("MYANDROIDSENDERID");
        //This service will keep your app receiving push even when closed.             
        CrossPushNotification.Current.Register();
        StartPushService();
        RegisterActivityLifecycleCallbacks(this);

    }
    public static void StartPushService()
    {
        AppContext.StartService(new Intent(AppContext, typeof(PushNotificationService)));

        if (Android.OS.Build.VERSION.SdkInt >= Android.OS.BuildVersionCodes.Kitkat)
        {
            Random rnd = new Random();
            // Publish the notification:
            PendingIntent pintent = PendingIntent.GetService(AppContext,0, new Intent(AppContext, typeof(PushNotificationService)),0);
            AlarmManager alarm = (AlarmManager)AppContext.GetSystemService(Context.AlarmService);
            alarm.Cancel(pintent);
        }
    }

我错过了什么?

2 个答案:

答案 0 :(得分:0)

这是来自谷歌的设计模式(我听说同样适用于iOS)因此您可以从本机代码获得多个通知,但您的应用将被Play商店拒绝,并且不遵循Google的模式,因此这样做在为Xamarin编写的推送通知插件中是不可能的。

有关详细信息,请参阅thisthis

答案 1 :(得分:0)

实际上这是可能的,我必须去特定平台来实现这一目标。我没有在实现AsyncTask接口的CrossPushNotificationListener中定义的PCL,而是在droid项目中创建了另一个类并实现了IPushNotificationListener接口,然后用它来初始化推送然后使用IPushNotificationListener方法添加代码以生成OnMessage通知,如下所示

Notification.Builder