xamarin - OneSignal 推送通知中的 AdditionalData
问题描述
大家好,我正在使用 Xamarin 开发多平台应用程序,并且正在使用 OneSignal 平台进行推送通知。
这是发送推送的代码:
var uri = new Uri("https://onesignal.com/api/v1/notifications");
Dictionary<string, object> userData = new Dictionary<string, object>
{
{ "app_id", "MyAppID" },
{"channel_for_external_user_ids", "push" },
{ "include_external_user_ids", new string[] { $"MyID" } },
{"contents", new {en = "Are you ok?" } },
{"headings", new {en = "Ehi" } },
{"data", new {FromID = 1234} },
{"priority", 10 },
};
通知发送没有任何问题。在我的 Xamarin 应用程序中,我尝试检测“数据”,这就是问题所在。
private static void HandleNotificationOpened(OSNotificationOpenedResult result)
{
try
{
//Notification data
OSNotificationPayload payload = result.notification.payload;
Dictionary<string, object> additionalData = payload.additionalData;
int NotificationFromID = 0;
if (additionalData != null)
{
if (additionalData.ContainsKey("FromID"))
{
NotificationFromID = (int)additionalData["FromID"]);
}
}
}
catch (Exception ex)
{
Debug.WriteLine(ex);
}
}
我收到错误 System.InvalidCastException: Specified cast is not valid。
我尝试了一切:Convert.ToInt32,我试图传递一个字符串......但没有任何效果。
如果我做这样的事情
Debug.WriteLine(additionalData["FromID"].GetType());
我得到 Foundation.NSNumber (如果我尝试传递一个字符串)或 Foundation.NSString (如果我尝试传递一个字符串)。我猜 NSNumber 和 NSString 是 iOS 对象
我该如何解决这个问题?我只需要传递一个整数值
谢谢
解决方案
推荐阅读
- ruby-on-rails - Ransack 'sort_link' 在列表末尾停止排序
- c++ - Curl - 发送数百个请求,但一次只发送四个 - 编程
- node.js - 使用任何签名验证节点 jsonwebtoken
- django - 如何使用Django ORM查询计算数量乘以价格
- blogger - 如何在移动视图中删除图像周围的白色边框?
- mysql - 字段列表MySql存储过程中的未知列
- html - Vba Web 导航和身份验证
- javascript - 如何在 chrome 中获取我的 JS 错误以显示正确的行号?
- python - Discord money bot 将用户 ID 保存在 json 文件中。当 Bot 重新启动时,它会为每个人创建一个新的(但相同的)ID
- autohotkey - 如何改变循环?