MVVM Xamarin app

本文关键字:app Xamarin MVVM | 更新日期: 2023-09-27 18:33:40

我正在使用 PCL 项目使用 Xamarin 构建一个应用程序,所以我在那里拥有我的核心功能,在不同的项目中具有特定于平台的实现。我使用的是MVVM结构,但是对于Xamarin,我遇到了复杂的事情。我正在使用Xamarin.Auth,它允许OAuth2登录,但它仅适用于.ios和.droid项目。

所以我在核心项目的视图上有一个"登录方式?"提示。然后,我转到调用自定义渲染器(此处显示的模型)的平台特定项目。

这是渲染器中的代码,需要根据用户选择的身份验证器进行"自定义"。

var auth = new OAuth2Authenticator (
                               clientId: "xxx", // your OAuth2 client id (For FB Also called App-ID)
                               scope: "", // the scopes for the particular API you're accessing, delimited by "+" symbols
                               authorizeUrl: new Uri ("https://m.facebook.com/dialog/oauth/"), // the auth URL for the service (i.e FB, Twitter)
                               redirectUrl: new Uri ("http://www.facebook.com/connect/login_success.html")); // the redirect URL for the service

正确的方法是什么?我是否使用公共变量来传达这一点,传递详细信息?等。最简单的解决方案是什么?

MVVM Xamarin app

通常,您将在 PCL 中创建接口,然后在实现该接口的平台特定项目中创建类。

在您的情况下,可能是这样的

public interface IAuthenticateService
{
       Task<AuthenticateResult> AuthenticateAsync(string clientId, CancellationToken cancellationToken)
}

身份验证结果应该是 PCL 中也可用的类。一旦你得到它,你只需将接口注入到你的视图模型中。请注意,您必须在特定于平台的项目中注册接口实现。

MVVMCross 是一个相对不错的框架,可以帮助您实现目标。

你必须创建一个依赖类,这是正确的方法。

不要使用渲染器,如果可能的话,在核心中完成所有的可视化工作,并让OAuth的特定到类中。

为此,您需要

创建一个接口,公开您需要使用的方法,然后在特定项目中创建一个实现该接口并使用 Dependency 属性修饰的类。

当你需要使用它时,你向依赖服务请求你的接口实例,它将从特定项目中检索正确的类。

以下是有关依赖服务的文档:https://developer.xamarin.com/guides/xamarin-forms/dependency-service/