所以,我在我的原生项目(Android MainActivity OnCreate)中有这个代码,它没有做任何事情:
var container = TinyIoCContainer.Current;
TinyMessengerHub tmh = (TinyMessengerHub)container.Resolve<ITinyMessengerHub>();
tmh.Subscribe<LocalMessage>((m) => {
// this doesn't show
Toast.MakeText(this, m.Content, ToastLength.Long);
});
我在这里使用TinyMessenger通知应用程序:
[Service(Exported = false), IntentFilter(new[] { "com.google.android.c2dm.intent.RECEIVE" })]
class MyGcmListenerService : GcmListenerService
{
public override void OnMessageReceived(string from, Bundle data)
{
string msg = data.GetString("message");
var container = TinyIoCContainer.Current;
TinyMessengerHub tmh = (TinyMessengerHub)container.Resolve<ITinyMessengerHub>();
tmh.Publish(new LocalMessage(this, msg));
}
}
我尝试将TinyMessenger添加到我的PCL中,但显然它不受支持(TinyIoc.cs文件中缺少引用等,相同的代码在Android项目中运行良好)
那么,有没有办法通知Xamarin.Forms有关到达的消息,以便我可以显示警告窗口?
答案 0 :(得分:6)
此示例使用Page
完成,但您可以使用Application
类订阅/取消订阅,也可以选择性地在应用逻辑中订阅/取消订阅。
在Xamarin.Forms
项目中,通过MessageCenter
订阅/取消订阅邮件:
protected override void OnAppearing()
{
base.OnAppearing();
MessagingCenter.Subscribe<object, string>(this, "ShowAlertMessage", (sender, msg) =>
{
Device.BeginInvokeOnMainThread(() => {
MainPage.DisplayAlert("Push message", msg, "OK");
});
});
}
protected override void OnDisappearing()
{
base.OnDisappearing();
MessagingCenter.Unsubscribe<object>(this, "ShowAlertMessage");
}
本土&#34;项目通过MessageCenter
发送消息:
MessagingCenter.Send<object, string> (this, "ShowAlertMessage", "StackOverFlow Rocks");