【发布时间】:2018-01-16 09:33:43
【问题描述】:
我尝试在 Android 应用程序中使用 OneSignal,它是使用 VS 和 Xamarin(不是 Xamarin Forms)创建的。它工作正常,但我无法实现某些功能。应用程序可以获得 3 种不同类型的推送通知。当应用程序获得第一种类型时,它仅更改全局变量。当应用程序获得 2-nd 和 3-rd 时,它需要启动特定的意图。在 iOS 应用程序中,我找到了解决方案,但在 Android 中,我发现解决方案仅适用于已关闭的应用程序,但不适用于后台应用程序。我无法从“HandleNotificationOpened”函数开始意图。任何人都可以帮我解决这个问题。 代码如下:
public class SplashActivity : Activity{
static bool isNotify=false;
static string messageAct = "";
protected override void OnCreate(Bundle savedInstanceState)
{
OneSignal.Current.StartInit("mykey")
.InFocusDisplaying(OSInFocusDisplayOption.None)
.HandleNotificationOpened(HandleNotificationOpened)
.EndInit();
OneSignal.Current.IdsAvailable(IdsAvailable);
base.OnCreate(savedInstanceState);
}
protected override void OnResume()
{
base.OnResume();
Intent notificationIntent;
if(isNotify){
if(messageAct="1"){
notificationIntent = new Intent(this, typeof(ProfileActivity));
}
if(messageAct="2"){
notificationIntent = new Intent(this, typeof(NotificationsActivity));
}
else{
notificationIntent = new Intent(this, typeof(MainActivity));
}
}
else{
notificationIntent = new Intent(this, typeof(MainActivity));
}
StartActivity(notificationIntent);
}
private static void HandleNotificationOpened(OSNotificationOpenedResult result)
{
OSNotificationPayload payload = result.notification.payload;
Dictionary<string, object> additionalData = payload.additionalData;
string message = payload.body;
if (additionalData != null)
{
isNotify = true;
if (additionalData.ContainsKey("act"))
{
messageAct = additionalData["act"].ToString();
}
}
}
}
【问题讨论】:
标签: android visual-studio xamarin xamarin.android onesignal