feature: open with extension

This commit is contained in:
2020-05-09 20:10:33 +08:00
parent e6b5bea459
commit f42705d1d2
6 changed files with 207 additions and 0 deletions

View File

@ -0,0 +1,46 @@
using Foundation;
using MobileCoreServices;
using UIKit;
namespace Pixiview.iOS.OpenExtension
{
[Register("OpenExtensionHandler")]
public class OpenExtensionHandler : NSExtensionRequestHandling
{
public override void BeginRequestWithExtensionContext(NSExtensionContext context)
{
bool urlFound = false;
foreach (var item in context.InputItems)
{
foreach (var provider in item.Attachments)
{
if (provider.HasItemConformingTo(UTType.URL))
{
provider.LoadItem(UTType.URL, null, (obj, error) =>
{
var url = obj as NSUrl;
if (url != null)
{
var uri = NSUrl.FromString($"pixiview://open{url.Path}");
System.Diagnostics.Debug.WriteLine($"open url: {uri}");
BeginInvokeOnMainThread(() => UIApplication.SharedApplication.OpenUrl(uri));
}
});
urlFound = true;
break;
}
}
if (urlFound)
{
break;
}
}
context.CompleteRequest(new NSExtensionItem[0], null);
}
}
}