如何仅为 iOS 本机添加代码,并在必要时在 xamarin 应用程序中调用它?
How can I add code for iOS native only and call it when necessary in xamarin app?
我正在使用 xamarin 创建一个演示项目,在其中,我想制作一个函数,我可以将其放入 iOS 本机端,并在需要时使用该特定函数并从函数中获取回调来自 iOS 原生。我已经检查过但没有找到任何可以与我一起工作的足够的东西。我只想为 iOS 调用下面的代码,并且需要它对 xamarin 代码的响应。
UIApplication.shared.open(redirectUrl, options: [:], completionHandler: { success in
if success {
// Handle success.
} else {
// Handle failure. Most likely app is not present on the user's device. You can redirect to App Store using these links:
}
})
我愿意接受任何可以解决我调用此函数的问题的方法。如果我可以在 xamarin 中调用它,那么也请给我建议,以便我可以将它放入 xamarin 文件中。
如果我没理解错,这可以通过 Dependency Service 实现。
表单中的界面
public interface IMyService
{
Task<bool> openUrl(string url);
}
在iOS
中实施
[assembly: Dependency(typeof(MyForms.iOS.MyService))]
namespace MyForms.iOS
{
internal class MyService : IMyService
{
public Task<bool> openUrl(string url)
{
return UIApplication.SharedApplication.OpenUrlAsync(new NSUrl(url), null);
}
}
}
表单中的用法
bool success = await DependencyService.Get<IMyService>().openUrl("www.google.com");
我正在使用 xamarin 创建一个演示项目,在其中,我想制作一个函数,我可以将其放入 iOS 本机端,并在需要时使用该特定函数并从函数中获取回调来自 iOS 原生。我已经检查过但没有找到任何可以与我一起工作的足够的东西。我只想为 iOS 调用下面的代码,并且需要它对 xamarin 代码的响应。
UIApplication.shared.open(redirectUrl, options: [:], completionHandler: { success in
if success {
// Handle success.
} else {
// Handle failure. Most likely app is not present on the user's device. You can redirect to App Store using these links:
}
})
我愿意接受任何可以解决我调用此函数的问题的方法。如果我可以在 xamarin 中调用它,那么也请给我建议,以便我可以将它放入 xamarin 文件中。
如果我没理解错,这可以通过 Dependency Service 实现。
表单中的界面
public interface IMyService
{
Task<bool> openUrl(string url);
}
在iOS
中实施[assembly: Dependency(typeof(MyForms.iOS.MyService))]
namespace MyForms.iOS
{
internal class MyService : IMyService
{
public Task<bool> openUrl(string url)
{
return UIApplication.SharedApplication.OpenUrlAsync(new NSUrl(url), null);
}
}
}
表单中的用法
bool success = await DependencyService.Get<IMyService>().openUrl("www.google.com");