Xamarin.forms 从PCL项目调用xamarin.ios中的方法

Xamarin.forms 从PCL项目调用xamarin.ios中的方法,xamarin.forms,xamarin.ios,Xamarin.forms,Xamarin.ios,在我的AppDelegate类中的Xamarin.iOS项目中,我有一个方法: public override void RegisteredForRemoteNotifications(UIApplication application, NSData deviceToken) { Hub = new SBNotificationHub(Constants.ListenConnectionString, Constants.NotificationHubName); Hub.

在我的
AppDelegate
类中的Xamarin.iOS项目中,我有一个方法:

public override void RegisteredForRemoteNotifications(UIApplication application, NSData deviceToken)
{
    Hub = new SBNotificationHub(Constants.ListenConnectionString, Constants.NotificationHubName);

    Hub.UnregisterAllAsync (deviceToken, (error) => {
        if (error != null)
        {
            System.Diagnostics.Debug.WriteLine("Error calling Unregister: {0}", error.ToString());
            return;
        }

        NSSet tags = null; // create tags if you want
        Hub.RegisterNativeAsync(deviceToken, tags, (errorCallback) => {
            if (errorCallback != null)
                System.Diagnostics.Debug.WriteLine("RegisterNativeAsync error: " + errorCallback.ToString());
        });
    });
}
如何从我的PCL项目中调用它?

a) 在PCL项目中创建接口:

namespace yournespace.Interfaces
{
公共接口IRemoteNotifications
{
无效的注册证明(UIApplication,NSData deviceToken);
}
}
b) 创建一个将在iOS项目中实现此接口的类,请记住使用所需属性装饰该类:

[程序集:依赖项(typeof(RemoteNotifications))]
命名空间YourNamespace.iOS.DependencyService
{
公共类远程通知:IRemoteNotifications
{
公共无效注册的更正(UIApplication应用程序、NSData deviceToken)
{
//将自定义逻辑放在此处
}
}
}
c) 使用依赖项服务从PCL项目调用自定义实现以定位接口实现

DependencyService.Get().RegisteredForRemoteNotifications(应用程序、设备登录);
d) 执行你的逻辑


这就是您所需要的。

使用DependencyServer或MessagingCenter谢谢您的回答,但是这些类型的
UIApplication
NSdata
在PCL中不可用,或者我遗漏了什么?我想你是对的,它们在PCL中不存在,因此你需要寻找另一种方法来获取数据,而不必从PCL发送数据。在我的回答中,我只是向您展示了如何从本机项目调用方法,这是您最初的问题。但是,现在需要检查如何从本机项目中获取这些值。例如,您可以在AppDelegate中获取它们,然后将它们存储在静态变量中,然后从方法中调用它们。