Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Xamarin中使用委托(特别是UnuseNotificationCenterDelegate)_Xamarin_Xamarin.ios - Fatal编程技术网

如何在Xamarin中使用委托(特别是UnuseNotificationCenterDelegate)

如何在Xamarin中使用委托(特别是UnuseNotificationCenterDelegate),xamarin,xamarin.ios,Xamarin,Xamarin.ios,我需要在中使用iOS 10功能。如何在c#/Xamarin中实现此委托?当使用UNUserNotificationCenterDelegate时,请确保在应用程序的UIApplicationLegate中的WillsFinishLaunching或FinishedLaunching方法中分配该委托 您必须在应用程序完成启动之前将代理对象分配给UNUserNotificationCenter对象 参考: AppDelegate.cs示例 public override bool FinishedL

我需要在中使用iOS 10功能。如何在c#/Xamarin中实现此委托?

当使用
UNUserNotificationCenterDelegate
时,请确保在应用程序的
UIApplicationLegate
中的
WillsFinishLaunching
FinishedLaunching
方法中分配该委托

您必须在应用程序完成启动之前将代理对象分配给UNUserNotificationCenter对象

参考:

AppDelegate.cs示例
public override bool FinishedLaunching(UIApplication应用程序、NSDictionary启动选项)
{
UNUserNotificationCenter.Current.RequestAuthorization(UNAuthorizationOptions.Alert,(已批准,错误)=>
{
//处理用户批准或拒绝您的通知。。。
});
UNUserNotificationCenter.Current.Delegate=新的MyUNUserNotificationCenterDelegate();
返回true;
}
在该示例中,我正在创建/分配一个名为
MyUnuseNotificationCenterDelegate
的委托类,因此您需要实现该类

MyUNUserNotificationCenterDelegate类示例: 此
UNUserNotificationCenterDelegate
示例将捕获发送的每个本地通知,并在锁定屏幕上显示通知或将详细信息输出到系统日志之间切换

公共类MyUnuseNotificationCenterDelegate:UnuseNotificationCenterDelegate
{
布尔开关;
public override void WillPresentNotification(未使用通知中心、未通知通知通知、操作完成处理程序)
{
如果(切换)
completionHandler(UNNotificationPresentationOptions.Alert);
其他的
{
控制台写入线(通知);
completionHandler(UNNotificationPresentationOptions.None);
}
切换=!切换;
}
}
现在您实际上需要发送一些通知,这将设置一个简单的重复通知:

创建/安排本地通知:
//计划重复通知。。。
var content=新的UNMutableNotificationContent();
content.Title=新的NSString(“来自宿醉”);
content.Body=新的NSString(“StackOverflow rocks”);
content.Sound=UNNotificationSound.Default;
var trigger=UNTimeIntervalNotificationTrigger.CreateTrigger(时间间隔:60,重复次数:true);
var request=UNNotificationRequest.FromIdentifier(标识符:“五秒钟”,内容:内容,触发器:触发器);
UnuseNotificationCenter.Current.AddNotificationRequest(请求,(N错误)=>
{
if(error!=null)Console.WriteLine(error);
});
每60秒发送一次通知,如果您在锁定屏幕上,您将每120秒收到一次警报

建议阅读以下内容,以了解如何使用Xamarin.iOS/C#与代表、协议和事件交互: iOS使用Objective-C委托来实现委托模式,其中一个对象将工作传递给另一个对象。执行工作的对象是第一个对象的委托。对象通过在某些事情发生后向其委托发送消息来通知其委托进行工作。在Objective-C中发送这样的消息在功能上等同于在C#中调用方法。委托实现方法以响应这些调用,从而为应用程序提供功能


Ref:

我尝试了此解决方案,但当我第一次运行应用程序时,它不起作用。当我第二次运行应用程序时,它会工作