首页 > 解决方案 > 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 对象

我该如何解决这个问题?我只需要传递一个整数值

谢谢

标签: xamarinpush-notificationonesignal

解决方案


推荐阅读