我正在实现在Xamarin.Forms中使用OneSignal推送通知。
我需要将OneSignal返回的字符串AdditionalData
传递给App()
构造函数。
因此,我使用HandleNotificationOpened(OSNotificationOpenedResult result)
处理通知点击事件并获取该字符串,然后将其传递给LoadApplication(new App(myData))
。
为了实现这个功能,我在Android的MainActivity
和iOS的AppDelegate
中编写了代码。
在Android上,一切都正常运行;也就是说,HandleNotificationOpened()
获取了additionalData
并将其传递给LoadApplication(new App(myData))
。
但在iOS上,当我打开通知时,HandleNotificationOpened()
代码没有被调用。
AppDelegate.cs
static string s = null;
public override bool FinishedLaunching(UIApplication app, NSDictionary options)
{
OneSignal.Current.StartInit("MyKey").HandleNotificationOpened(HandleNotificationOpened).EndInit();
if(s!=null)
{
LoadApplication(new App(s));
}
else
{
LoadApplication(new App("myUrl.lasso"));
}
return base.FinishedLaunching(app, options);
}
private static void HandleNotificationOpened(OSNotificationOpenedResult result)
{
OSNotificationPayload payload = result.notification.payload;
Dictionary<string, object> additionalData = payload.additionalData;
if (additionalData != null)
{
if (additionalData.ContainsKey("url_direct"))
{
s = additionalData["url_direct"].ToString();
System.Diagnostics.Debug.WriteLine("We need to redirect it to: " + s);
}
}
}