iOS 8 共享扩展不适用于 iBooks
iOS 8 share extension doesn't work with iBooks
我尝试使用我的自定义扩展在 iBooks 中共享 selected/highlighted 文本,但它里面没有任何内容 self.extensionContext
<NSExtensionContext: 0x17541d90> - UUID: <__NSConcreteUUID 0x1765e860> D69F0393-C5F1-4DEB-9A97-B479C2BC0C95 - _isHost: NO
items:
(
)
所以当我在提供的列表中选择我的扩展后,它只是弹出空的 SLComposeServiceViewController
邮件、iMessages、Twitter 等按预期工作。我必须做任何额外的魔法来处理这个吗?
有趣的是
- 从 iBooks 共享时,
self.extensionContext.inputItems
是一个空数组。它没有给你任何可以分享的东西。
- 从 iBooks 共享仅适用于 Apple 提供的扩展。在我的 iPhone 上,iBooks 提供了其他扩展——Evernote、Things 等等——但其中 none 可以正常工作。他们都提出了空洞的内容。
我的看法:来自 Apple 扩展的共享依赖于一些未记录的秘密行为,并且您没有可以应用的额外魔法来通过应用商店批准流程。
如果您将激活规则设置为 TRUEPREDICATE
(这意味着该扩展应该始终显示)或其他非常宽松的规则,您的扩展将显示在 iBooks 中。但看起来您现在无法获得任何要共享的内容。我会向 Apple 提交一个关于它的错误。
看来问题已经解决iOS 9、以下代码(在Swift)正确returns在iBooks中选择的内容:
for item: AnyObject in self.extensionContext!.inputItems {
let inputItem = item as! NSExtensionItem
for provider: AnyObject in inputItem.attachments! {
let itemProvider = provider as! NSItemProvider
if itemProvider.hasItemConformingToTypeIdentifier(kUTTypeText as String) {
itemProvider.loadItemForTypeIdentifier(kUTTypeText as String, options: nil, completionHandler: { (txt, error) in
NSOperationQueue.mainQueue().addOperationWithBlock {
//Doing stuff with txt
}
})
}
}
}
我尝试使用我的自定义扩展在 iBooks 中共享 selected/highlighted 文本,但它里面没有任何内容 self.extensionContext
<NSExtensionContext: 0x17541d90> - UUID: <__NSConcreteUUID 0x1765e860> D69F0393-C5F1-4DEB-9A97-B479C2BC0C95 - _isHost: NO
items:
(
)
所以当我在提供的列表中选择我的扩展后,它只是弹出空的 SLComposeServiceViewController
邮件、iMessages、Twitter 等按预期工作。我必须做任何额外的魔法来处理这个吗?
有趣的是
- 从 iBooks 共享时,
self.extensionContext.inputItems
是一个空数组。它没有给你任何可以分享的东西。 - 从 iBooks 共享仅适用于 Apple 提供的扩展。在我的 iPhone 上,iBooks 提供了其他扩展——Evernote、Things 等等——但其中 none 可以正常工作。他们都提出了空洞的内容。
我的看法:来自 Apple 扩展的共享依赖于一些未记录的秘密行为,并且您没有可以应用的额外魔法来通过应用商店批准流程。
如果您将激活规则设置为 TRUEPREDICATE
(这意味着该扩展应该始终显示)或其他非常宽松的规则,您的扩展将显示在 iBooks 中。但看起来您现在无法获得任何要共享的内容。我会向 Apple 提交一个关于它的错误。
看来问题已经解决iOS 9、以下代码(在Swift)正确returns在iBooks中选择的内容:
for item: AnyObject in self.extensionContext!.inputItems {
let inputItem = item as! NSExtensionItem
for provider: AnyObject in inputItem.attachments! {
let itemProvider = provider as! NSItemProvider
if itemProvider.hasItemConformingToTypeIdentifier(kUTTypeText as String) {
itemProvider.loadItemForTypeIdentifier(kUTTypeText as String, options: nil, completionHandler: { (txt, error) in
NSOperationQueue.mainQueue().addOperationWithBlock {
//Doing stuff with txt
}
})
}
}
}