iOS 8共享扩展程序不适用于iBooks

时间:2015-01-27 12:39:06

标签: ios ibooks ios8-extension

我尝试使用自定义扩展程序在iBooks中共享所选/突出显示的文本,但它在self.extensionContext内没有任何内容

<NSExtensionContext: 0x17541d90> - UUID: <__NSConcreteUUID 0x1765e860> D69F0393-C5F1-4DEB-9A97-B479C2BC0C95 - _isHost: NO
items:
(
)

所以在我在提供的列表中选择我的扩展名后,它会弹出空SLComposeServiceViewController

Mail,iMessages,Twitter等按预期工作。还有什么额外的魔法可以解决这个问题吗?

2 个答案:

答案 0 :(得分:4)

有趣的事情是

  • 从iBooks共享时,self.extensionContext.inputItems是一个空数组。它没有给你任何东西可以分享。
  • 从iBooks共享只能正常使用Apple提供的扩展程序。在我的iPhone上,可以从iBooks获得其他扩展 - Evernote,Things和其他 - 但它们都不能正常工作。他们都提出了空洞的内容。

我的观点: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
                    }
                })
            }
        }   
    }