我尝试使用自定义扩展程序在iBooks中共享所选/突出显示的文本,但它在self.extensionContext
内没有任何内容
<NSExtensionContext: 0x17541d90> - UUID: <__NSConcreteUUID 0x1765e860> D69F0393-C5F1-4DEB-9A97-B479C2BC0C95 - _isHost: NO
items:
(
)
所以在我在提供的列表中选择我的扩展名后,它会弹出空SLComposeServiceViewController
Mail,iMessages,Twitter等按预期工作。还有什么额外的魔法可以解决这个问题吗?
答案 0 :(得分:4)
有趣的事情是
self.extensionContext.inputItems
是一个空数组。它没有给你任何东西可以分享。我的观点:Apple的扩展分享依赖于一些无证的秘密行为,并且您无法通过应用商店批准流程申请额外的魔法。
如果您将激活规则设置为TRUEPREDICATE
(这意味着扩展程序应始终显示)或非常宽松,您的扩展程序将显示在iBooks中。但看起来您现在无法分享任何内容。我向Apple提交了一个关于它的错误。
答案 1 :(得分:2)
似乎问题已经通过iOS 9解决了,下面的代码(在Swift中)正确地返回了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
}
})
}
}
}