C# Xamarin-是否有方法从本地项目通知Xamarin.Forms?
因此,我的原生项目(Android MainActivity OnCreate)中有这段代码,它不做任何事情:C# Xamarin-是否有方法从本地项目通知Xamarin.Forms?,c#,xamarin,xamarin.android,xamarin.forms,C#,Xamarin,Xamarin.android,Xamarin.forms,因此,我的原生项目(Android MainActivity OnCreate)中有这段代码,它不做任何事情: var container = TinyIoCContainer.Current; TinyMessengerHub tmh = (TinyMessengerHub)container.Resolve<ITinyMessengerHub>(); tmh.Subscribe<LocalMessage>((m) => { // this doesn'
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);
});
var container=TinyIoCContainer.Current;
TinyMessengerHub tmh=(TinyMessengerHub)container.Resolve();
tmh.订阅((m)=>{
//这不显示
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));
}
}
[Service(Exported=false),IntentFilter(new[]{“com.google.android.c2dm.intent.RECEIVE”}]
类MyGcmListenerService:GcmListenerService
{
public override void OnMessageReceived(来自的字符串,捆绑数据)
{
string msg=data.GetString(“消息”);
var container=TinyIoCContainer.Current;
TinyMessengerHub tmh=(TinyMessengerHub)container.Resolve();
发布(新本地消息(this,msg));
}
}
我试图将TinyMessenger添加到我的PCL中,但显然不受支持(TinyIoc.cs文件中缺少引用等,相同的代码在Android项目中运行良好)
那么,有没有办法将到达的消息通知Xamarin.Forms,以便我可以显示一个警报窗口?这个例子是通过
页面完成的,但是您可以使用应用程序类订阅/取消订阅,或者在应用程序逻辑中有选择地订阅/取消订阅
在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");
}
MessagingCenter.Send<object, string> (this, "ShowAlertMessage", "StackOverFlow Rocks");
Xamarin Forms有一个内置组件,可以满足您的需要。您有任何示例吗?在线示例似乎处理共享代码中的消息传递,但我如何在项目之间实现这一点?这:也将跨所有边界工作。谢谢,我还必须在UI线程中运行DisplayAlert函数,如下所示:Device.beginInvokeMainThread(()=>{MainPage.DisplayAlert(“Push message”,msg,“OK”);})
@UrticaDioica,你是对的,我用BeginInvokeOnMainThread
更新了答案。它对我不起作用,我得到了下一个异常:System.Reflection.TargetInvocationException:调用的目标引发了异常@SushiHangover@DamirBeylkhanov如果没有上下文,我不知道,用你的problem@SushiHangover我的上下文与本问题中描述的完全相同,当我发送消息p.s.XF v.2.3.4时发生异常