71 lines
2.1 KiB
C#
71 lines
2.1 KiB
C#
using Android.App;
|
|
using Android.Content;
|
|
using Android.Media;
|
|
using Android.Net;
|
|
using Android.Support.V4.App;
|
|
using Android.Util;
|
|
using Firebase.Messaging;
|
|
using Plugin.Badge;
|
|
|
|
namespace FCMTest
|
|
{
|
|
[Service]
|
|
[IntentFilter(new[] { "com.google.firebase.MESSAGING_EVENT" })]
|
|
class MyFirebaseMessagingService : FirebaseMessagingService
|
|
{
|
|
const string TAG = "FCMTest MessageService";
|
|
|
|
int m_iNotifyNo = 0;
|
|
|
|
private void SendLocalNotification(string title, string body)
|
|
{
|
|
|
|
|
|
Intent intent = new Intent(this, Java.Lang.Class.FromType(typeof(MainActivity)));
|
|
intent.AddFlags(ActivityFlags.ClearTop);
|
|
PendingIntent pendingIntent = PendingIntent.GetActivity(this, m_iNotifyNo, intent, PendingIntentFlags.OneShot);
|
|
if(m_iNotifyNo < 9)
|
|
m_iNotifyNo++;
|
|
else
|
|
m_iNotifyNo = 0;
|
|
Uri defaultSoundUri = RingtoneManager.GetDefaultUri(RingtoneType.Notification);
|
|
NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this)
|
|
.SetSmallIcon(Resource.Drawable.eyulchon)
|
|
.SetContentTitle(title)
|
|
.SetContentText(body)
|
|
.SetAutoCancel(true)
|
|
.SetSound(defaultSoundUri)
|
|
.SetContentIntent(pendingIntent);
|
|
|
|
NotificationManager notificationManager =
|
|
(NotificationManager)GetSystemService(Context.NotificationService);
|
|
|
|
notificationManager.Notify(m_iNotifyNo+2, notificationBuilder.Build());
|
|
}
|
|
|
|
public override void OnMessageReceived(RemoteMessage message)
|
|
{
|
|
Log.Debug(TAG, "onMessageReceived");
|
|
|
|
//base.OnMessageReceived(message);
|
|
|
|
if(message.Data.Count > 0)
|
|
{
|
|
Log.Debug(TAG, "message data payload: " + message.Data);
|
|
|
|
string title = message.Data.ContainsKey("title") ? message.Data["title"] : "";
|
|
string body = message.Data.ContainsKey("body") ? message.Data["body"] : "";
|
|
SendLocalNotification(title, body);
|
|
|
|
string strBadge = message.Data.ContainsKey("badge") ? message.Data["badge"] : "0";
|
|
int iBadge;
|
|
int.TryParse(strBadge, out iBadge);
|
|
CrossBadge.Current.SetBadge(iBadge);
|
|
}
|
|
|
|
if(message.GetNotification() != null)
|
|
Log.Debug(TAG, "Message Notification Body: " + message.GetNotification().Body);
|
|
}
|
|
}
|
|
}
|