c# - 如何在 xamarin 上正确接收 Intent Extras
问题描述
目前我正在使用本教程进行 xamarin 推送通知。它就像一个魅力。我现在的目标是正确处理意图。
在我的 firebase 消息服务中,我创建了一个通知并添加了附加信息。
private void CreateNotification(Object e)
{
try
{
string title = "";
string body = "";
var intent = new Intent(this, typeof(MainActivity));
var i = e as Intent;
var bundle = i.Extras;
title = bundle.GetString("gcm.notification.title");
body = bundle.GetString("gcm.notification.body");
intent.PutExtra("view", "test");
intent.PutExtra("title", title);
intent.PutExtra("body", body);
intent.AddFlags(ActivityFlags.ClearTop | ActivityFlags.SingleTop);
var pendingIntent = PendingIntent.GetActivity(this, 0, intent, PendingIntentFlags.CancelCurrent | PendingIntentFlags.UpdateCurrent);
Notification.Builder builder = new Notification.Builder(this);
builder.SetSmallIcon(Resource.Drawable.icon_notification);
builder.SetContentIntent(pendingIntent);
builder.SetLargeIcon(BitmapFactory.DecodeResource(Resources, Resource.Drawable.icon_notification));
builder.SetContentTitle("Test");
builder.SetContentText(body);
builder.SetDefaults(NotificationDefaults.Sound);
builder.SetAutoCancel(true);
NotificationManager notificationManager = (NotificationManager)GetSystemService(NotificationService);
notificationManager.Notify(1, builder.Build());
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
目前后台推送通知处理得很好。我可以在OnCreate
方法中运行一条简单的线MainActivity.cs
Intent.GetStringExtra("view");
这让我得到了在 CreateNotification 中设置的值。
我遇到的问题是试图将意图放在前台。此代码位于 MainActivity.cs 上,当在前台单击推送通知时触发。
protected async override void OnNewIntent(Intent intent)
{
base.OnNewIntent(intent);
if (Intent.Extras != null)
{
foreach (var key in Intent.Extras.KeySet())
{
var value = Intent.Extras.GetString(key);
Log.Debug(TAG, "Key: {0} Value: {1}", key, value);
}
}
}
Intent.Extras 始终为空,请问我哪里出错了。
解决方案
也许答案为时已晚,但它可以帮助其他人。
唯一的错误是您使用Intent代替了意图(传递的参数)
if (Intent.Extras != null)
代替
if (intent.Extras != null)
我也陷入了同样的分心。
推荐阅读
- c++ - 如何使用 re2 获取部分匹配的数量
- vuetify.js - 创建表单编号输入并验证它
- javascript - 如何修复元素类型无效:需要一个字符串(对于内置组件)?
- mathematical-optimization - 我怎样才能最好地解决这个优化问题?
- swift - 我想将忘记密码链接添加到 mac 登录屏幕
- python - 如何将网页抓取的文本打印到单行上?
- autohotkey - 如何设置宏以在指定时间在不和谐频道中发送命令?
- mongodb - Mongodb-获取字段匹配特定值的文档的不同计数
- ios - 在 Cocos2dx iOS 项目中添加 Google Firebase
- android - 如何让用户使用毕加索裁剪图像?