gpt4 book ai didi

ios - 从扩展上下文中提取URL

转载 作者:行者123 更新时间:2023-12-01 16:09:05 24 4
gpt4 key购买 nike

我正在使用Xamarin开发具有共享扩展功能的iOS应用,效果很好。当我从Chrome打开扩展程序以共享网址时,系统会提示“发布”对话框。点击帖子后,我想提示共享的网址。出现提示对话框,但它为空。看来我没有正确提取网址。

我正在使用以下代码从扩展上下文中提取URL。

var urlstr = string.Empty;
var item = ExtensionContext.InputItems[0];
NSItemProvider prov = null;

if (item != null)
prov = item.Attachments[0];

if (prov != null)
{
prov.LoadItem(UTType.URL, null, (NSObject url, NSError error) =>
{
if (url == null)
return;

NSUrl newUrl = (NSUrl)url;
urlstr = newUrl.ToString();
});


UIAlertController alert = UIAlertController.Create("Share extension", urlstr, UIAlertControllerStyle.Alert);

PresentViewController(alert, true, () =>
{
DispatchQueue.MainQueue.DispatchAfter(new DispatchTime(DispatchTime.Now, 5000000000), () =>
{
ExtensionContext.CompleteRequest(null, null);
});
});
}

这是info.plist文件中的词典
  <dict>
<key>NSExtensionActivationRule</key>
<string>TRUEPREDICATE</string>
<key>NSExtensionActivationSupportsWebURLWithMaxCount</key>
<integer>1</integer>
<key>NSExtensionActivationSupportsWebPageWithMaxCount</key>
<integer>1</integer>
</dict>

最佳答案

那是因为LoadItem是异步的。因此,您可以调用它,并在通话后立即显示警报对话框。这导致显示对话框时未设置urlstr。您必须在LoadItem的完成处理程序中显示警报对话框。

prov.LoadItem(UTType.URL, null, (NSObject url, NSError error) =>
{
if (url == null)
return;

NSUrl newUrl = (NSUrl)url;
urlstr = newUrl.ToString();

UIAlertController alert = UIAlertController.Create("Share extension", urlstr, UIAlertControllerStyle.Alert);

PresentViewController(alert, true, () =>
{
DispatchQueue.MainQueue.DispatchAfter(new DispatchTime(DispatchTime.Now, 5000000000), () =>
{
ExtensionContext.CompleteRequest(null, null);
});
});
});

关于ios - 从扩展上下文中提取URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37355551/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com