我对Xamarin来说相对较新,并且已经在我的应用程序中得到了一个我希望收到通知的地方,我使用本地通知向用户显示他们收到了我的某个人的消息应用。虽然我可以收到要显示的通知,但是当它点击它时,它既不会显示任何内容,也不会重新显示"重新启动"应用程序(将用户带回登录页面)。
如何在点击通知时显示通知以显示设置页面,例如我的联系人页面?
答案 0 :(得分:1)
如何在点击通知时显示通知以显示设置页面,例如我的联系人页面?
for each
只有一项活动,无论您创建了多少页,都会在Xamarin.Forms
上创建。
但我们仍然可以找到解决方法:
创建本地通知,旨在指明您要导航到哪个页面(MainActivity
):
Page1
在Notification.Builder builder = new Notification.Builder(Xamarin.Forms.Forms.Context);
Intent intent = new Intent(Xamarin.Forms.Forms.Context, typeof(MainActivity));
Bundle bundle = new Bundle();
// if we want to navigate to Page1:
bundle.PutString("pageName", "Page1");
intent.PutExtras(bundle);
PendingIntent pIntent = PendingIntent.GetActivity(Xamarin.Forms.Forms.Context, 0, intent, 0);
builder.SetContentTitle(title)
.SetContentText(text)
.SetSmallIcon(Resource.Drawable.icon)
.SetContentIntent(pIntent);
var manager = (NotificationManager)Xamarin.Forms.Forms.Context.GetSystemService("notification");
manager.Notify(1, builder.Build());
内MainActivity.cs
我们使用反射来设置应用OnCreate
:
MainPage
注意:此变通方法会修改PCL protected override void OnCreate(Bundle bundle)
{
TabLayoutResource = Resource.Layout.Tabbar;
ToolbarResource = Resource.Layout.Toolbar;
base.OnCreate(bundle);
global::Xamarin.Forms.Forms.Init(this, bundle);
var myApp = new App();
var mBundle = Intent.Extras;
if (mBundle != null)
{
var pageName = mBundle.GetString("pageName");
if (!string.IsNullOrEmpty(pageName))
{
//get the assemblyQualifiedName of page
var pageAssemblyName = "Your_PCL_Name." + pageName+",Your_PCL_Name";
Type type = Type.GetType(pageAssemblyName);
if (type != null)
{
var currentPage = Activator.CreateInstance(type);
//set the main page
myApp.MainPage = (Page)currentPage;
}
}
}
//load myApp
LoadApplication(myApp);
}
的{{1}},如果您对此属性有用,请正确修改逻辑。