Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/97.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iOS在地图上添加共享扩展_Ios_Maps_Ios8 Share Extension - Fatal编程技术网

iOS在地图上添加共享扩展

iOS在地图上添加共享扩展,ios,maps,ios8-share-extension,Ios,Maps,Ios8 Share Extension,我想在苹果地图上添加共享扩展,有人知道怎么做吗。我尝试按以下方式设置NSExtensionAttributes,但不起作用,我的应用程序未显示在地图的共享表中 NSExtensionAttributes NSExtensionActivationRule NSExetnsionActivationSupportsWebURLWithMaxCount NSExetnsionActivationSupportsWebPageWithMaxCount 我不确定为什么NSExtensionA

我想在苹果地图上添加共享扩展,有人知道怎么做吗。我尝试按以下方式设置NSExtensionAttributes,但不起作用,我的应用程序未显示在地图的共享表中

NSExtensionAttributes

NSExtensionActivationRule
  NSExetnsionActivationSupportsWebURLWithMaxCount
  NSExetnsionActivationSupportsWebPageWithMaxCount

我不确定为什么
NSExtensionActivationSupportsText
不适用于地图,但我尝试时得到了相同的结果

您需要的是一个更复杂的激活规则。将激活规则的类型设置为“字符串”,并使用中描述的
子查询
格式设置值。当您这样做时,您可以请求一个或多个特定的UTI。地图将提供纯文本(
public.plain text
),它应该与
NSExtensionActivationSupportsText
等效,但显然不是。它还提供位置卡(
public.card
)和URL(
public.URL

由UTI检查其中任何一项的激活规则如下所示

SUBQUERY(extensionItems, $extensionItem, SUBQUERY($extensionItem.attachments, $attachment, ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO "public.plain-text").@count >= 1).@count >= 1 OR SUBQUERY(extensionItems, $extensionItem, SUBQUERY($extensionItem.attachments, $attachment, SUBQUERY($attachment.registeredTypeIdentifiers, $uti, $uti UTI-CONFORMS-TO "public.url" AND NOT $uti UTI-CONFORMS-TO "public.file-url").@count >= 1).@count >= 1).@count >= 1 OR SUBQUERY(extensionItems, $extensionItem, SUBQUERY($extensionItem.attachments, $attachment, ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO "public.vcard").@count >= 1).@count >= 1
这只是三个子查询子句,用于检查这些UTI中的每一个,或者将它们放在一起

根据您可以处理的数据,您可能希望将其减少到只包括扩展知道如何处理的UTI。例如,如果您只需要URL,请仅使用该部分:

SUBQUERY(extensionItems, $extensionItem, SUBQUERY($extensionItem.attachments, $attachment, SUBQUERY($attachment.registeredTypeIdentifiers, $uti, $uti UTI-CONFORMS-TO "public.url" AND NOT $uti UTI-CONFORMS-TO "public.file-url").@count >= 1).@count >= 1).@count >= 1
此版本只检查您获得的URL不是文件URL

Maps提供了一个Apple Maps URL,类似于

如果使用vcard UTI,将得到一个
NSString
编码为
NSData
。如果你解码它,它看起来像这样:

BEGIN:VCARD
VERSION:3.0
PRODID:-//Apple Inc.//iOS 8.2//EN
N:;Shared Location;;;
FN:Shared Location
item1.ADR;type=HOME;type=pref:;;;;;;
item2.URL;type=pref:http://maps.apple.com/?q=37.332331\,-122.031219&sll=37.332331\,-122.031219
item2.X-ABLabel:map url
END:VCARD

您是否尝试过激活规则的其他合法值?是,我尝试了其他所有合法属性:NSExtensionActivationSupportsFileWithMaxCount 100 NSExtensionActivationSupportsView WithMaxCount 100 NSExtensionActivationSupportsText-YES NSExtensionActivationSupportsWebPage WithMaxCount 100 NSExtensionActivationSupports WithMaxCount100@Tom:有没有办法给我一个最大的计数限制NSExetNationActivationSupportsWebPageWithMaxCount。@count仅适用于@count==1和@count>=1。我能给你点像伯爵的东西吗