我正在尝试使用Xamarin应用程序进行通知,最初是在Android方面,然后我将使用iOS。我下载了android sample app,它运行得很好。但是,当我尝试在我自己的应用程序中实现相同的功能时,虽然我没有收到任何错误,但我也没有得到任何通知。
我最初只想在主要活动中创建一个测试,但我想知道它是否与这是一个主要细节类型的应用程序有关。
我是否必须为通知构建器和管理器提供不同的上下文,而不是示例显示的主要活动?不幸的是,我还没有设法找到一个实现通知的示例主 - 详细信息应用程序。
主要活动OnCreate()如下......
protected override void OnCreate(Bundle bundle)
{
TabLayoutResource = Resource.Layout.Tabbar;
ToolbarResource = Resource.Layout.Toolbar;
AndroidContext = this;
base.OnCreate(bundle);
global::Xamarin.Forms.Forms.Init(this, bundle);
UserDialogs.Init(this);
LoadApplication(new App()); //<- setup master-detail forms
IsPlayServicesAvailable();
FirebaseApp.InitializeApp(this);
var refreshedToken = FirebaseInstanceId.Instance.Token;
var notificationBuilder = new Notification.Builder(this)
.SetSmallIcon(Resource.Drawable.icon)
.SetContentTitle("myStaff Message")
.SetContentText("test")
.SetAutoCancel(true);
var notificationManager = NotificationManager.FromContext(this);
notificationManager.Notify(0, notificationBuilder.Build());
}
请问人们不要回答“你应该使用xyz插件”或“使用nuget abc ......”或类似内容。虽然我很欣赏有很多插件可以做到这一点,但我想了解我的代码出了什么问题而不是简单地避免/解决问题。
编辑:好的,所以这比我意识到的要深刻。我现在尝试了两个不同的插件 - 在两种情况下都是相同的结果,没有错误但没有通知。这只是疯了。在我的代码中回过头几个星期,然后在那里尝试然后迭代到它停止的地方(也许)它可能会给我一个阻止它的线索
答案 0 :(得分:0)
因此,经过进一步调查并挖掘旧设备,似乎这是一个奥利奥问题。
似乎缺乏官方文档,演示项目不允许使用频道,这就是问题所在。它与master-detail无关 - 我的代码在旧设备上运行时效果很好(所有版本),只是在8.0+上运行 - 现在我只需修复它。
编辑:根据this github thread中的 kylewhittington 发布的帖子(大约在第8篇帖子中),我现在设法编写了一个可以在Oreo和旧版Android中运行的解决方案。只需添加iOS代码即可。