iOS在地图上添加共享扩展

时间:2015-01-11 08:47:53

标签: ios maps ios8-share-extension

我想在Apple的地图上添加分享扩展,有谁知道该怎么做。我尝试将NSExtensionAttributes设置如下,但它不起作用,我的APP没有显示在地图的共享表中。

NSExtensionAttributes

NSExtensionActivationRule
  NSExetnsionActivationSupportsWebURLWithMaxCount
  NSExetnsionActivationSupportsWebPageWithMaxCount

1 个答案:

答案 0 :(得分:13)

我不确定为什么NSExtensionActivationSupportsText无法使用Google地图,但我尝试时会得到相同的结果。

您需要的是更复杂的激活规则。将激活规则的类型设置为" string",并使用App Extension Programming Guide中描述的SUBQUERY格式设置值。当您这样做时,您可以请求一个或多个特定的UTI。地图将提供纯文本(public.plain-text),其中等同于NSExtensionActivationSupportsText,但显然不是。public.card。它还提供了位置卡(public.url)和网址(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检查任何这些内容的激活规则看起来像

SUBQUERY

只有三个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 条款可以检查每个UTI,或者一起检查。

根据您可以处理的数据,您可能希望将其减少到仅涵盖您的分机知道如何处理的UTI。例如,如果您想要的只是URL,则只使用该部分:

NSString

此版本只是检查您是否获得了不是文件网址的网址。

地图提供的Apple地图网址类似于http://maps.apple.com/?q=37.332331,-122.031219&sll=37.332331,-122.031219

如果您使用vcard UTI,则会NSDataBEGIN: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 进行编码。如果你解码它,它看起来像这样:

{{1}}