共享扩展在 Chrome 中不起作用
Share Extension is not working in Chrome
我正在处理共享扩展
这是 info.plist 文件的代码。这在 Safari 中工作正常,但在 Chrome.
中不行
<key>NSExtension</key>
<dict>
<key>NSExtensionAttributes</key>
<dict>
<key>NSExtensionActivationRule</key>
<dict>
<key>NSExtensionActivationSupportsImageWithMaxCount</key>
<integer>0</integer>
<key>NSExtensionActivationSupportsWebURLWithMaxCount</key>
<integer>1</integer>
</dict>
</dict>
<key>NSExtensionMainStoryboard</key>
<string>MainInterface</string>
<key>NSExtensionPointIdentifier</key>
<string>com.apple.share-services</string>
</dict>
有什么想法吗?如何在 Chrome 以及
中启用共享扩展
您缺少一些代码。对于 chrome 你还需要传递 js 文件
<dict>
<key>NSExtensionAttributes</key>
<dict>
<key>NSExtensionActivationRule</key>
<dict>
<key>NSExtensionActivationSupportsText</key>
<true/>
<key>NSExtensionActivationSupportsWebPageWithMaxCount</key>
<integer>1</integer>
<key>NSExtensionActivationSupportsWebURLWithMaxCount</key>
<integer>1</integer>
</dict>
<key>NSExtensionJavaScriptPreprocessingFile</key>
<string>DemoPreprocessor</string>
</dict>
<key>NSExtensionMainStoryboard</key>
<string>MainInterface</string>
<key>NSExtensionPointIdentifier</key>
<string>com.apple.share-services</string>
</dict>
更多详情请访问此 link
中的演示扩展代码
无需编辑 plist。这适用于 Google Chrome 和 Safari:
override func viewDidLoad() {
super.viewDidLoad()
for item in extensionContext!.inputItems {
if let attachments = item.attachments {
for itemProvider in attachments! {
itemProvider.loadItemForTypeIdentifier("public.url", options: nil, completionHandler: { (object, error) -> Void in
if object != nil {
println(object) //This is your URL
}
})
}
}
}
}
在我的例子中,仅添加带有“NSExtensionJavaScriptPreprocessingFile”的 JS 文件并没有解决问题。
<key>NSExtension</key>
<dict>
<key>NSExtensionAttributes</key>
<dict>
<key>NSExtensionJavaScriptPreprocessingFile</key>
<string>Action</string>
<key>NSExtensionActivationRule</key>
<dict>
<key>NSExtensionActivationSupportsText</key>
<true/>
<key>NSExtensionActivationSupportsWebURLWithMaxCount</key>
<integer>1</integer>
</dict>
</dict>
<key>NSExtensionMainStoryboard</key>
<string>MainInterface</string>
<key>NSExtensionPointIdentifier</key>
<string>com.apple.share-services</string>
</dict>
添加也很重要:
<key>NSExtensionActivationSupportsText</key>
<true/>
我目前不知道为什么。
我在官方文档中找到了这个:NSExtensionActivationSupportsText:包括这个键以向系统和其他应用表明您的应用支持文本。
非常感谢。
只有 safari 使用这个数组
NSItemProvider = [[NSExtensionItem 附件] firstObject];
其他浏览器使用 API
NSItemProvider = [[NSExtensionItem 附件] objectAtIndex:1];
我正在处理共享扩展
这是 info.plist 文件的代码。这在 Safari 中工作正常,但在 Chrome.
中不行 <key>NSExtension</key>
<dict>
<key>NSExtensionAttributes</key>
<dict>
<key>NSExtensionActivationRule</key>
<dict>
<key>NSExtensionActivationSupportsImageWithMaxCount</key>
<integer>0</integer>
<key>NSExtensionActivationSupportsWebURLWithMaxCount</key>
<integer>1</integer>
</dict>
</dict>
<key>NSExtensionMainStoryboard</key>
<string>MainInterface</string>
<key>NSExtensionPointIdentifier</key>
<string>com.apple.share-services</string>
</dict>
有什么想法吗?如何在 Chrome 以及
中启用共享扩展您缺少一些代码。对于 chrome 你还需要传递 js 文件
<dict>
<key>NSExtensionAttributes</key>
<dict>
<key>NSExtensionActivationRule</key>
<dict>
<key>NSExtensionActivationSupportsText</key>
<true/>
<key>NSExtensionActivationSupportsWebPageWithMaxCount</key>
<integer>1</integer>
<key>NSExtensionActivationSupportsWebURLWithMaxCount</key>
<integer>1</integer>
</dict>
<key>NSExtensionJavaScriptPreprocessingFile</key>
<string>DemoPreprocessor</string>
</dict>
<key>NSExtensionMainStoryboard</key>
<string>MainInterface</string>
<key>NSExtensionPointIdentifier</key>
<string>com.apple.share-services</string>
</dict>
更多详情请访问此 link
中的演示扩展代码无需编辑 plist。这适用于 Google Chrome 和 Safari:
override func viewDidLoad() {
super.viewDidLoad()
for item in extensionContext!.inputItems {
if let attachments = item.attachments {
for itemProvider in attachments! {
itemProvider.loadItemForTypeIdentifier("public.url", options: nil, completionHandler: { (object, error) -> Void in
if object != nil {
println(object) //This is your URL
}
})
}
}
}
}
在我的例子中,仅添加带有“NSExtensionJavaScriptPreprocessingFile”的 JS 文件并没有解决问题。
<key>NSExtension</key>
<dict>
<key>NSExtensionAttributes</key>
<dict>
<key>NSExtensionJavaScriptPreprocessingFile</key>
<string>Action</string>
<key>NSExtensionActivationRule</key>
<dict>
<key>NSExtensionActivationSupportsText</key>
<true/>
<key>NSExtensionActivationSupportsWebURLWithMaxCount</key>
<integer>1</integer>
</dict>
</dict>
<key>NSExtensionMainStoryboard</key>
<string>MainInterface</string>
<key>NSExtensionPointIdentifier</key>
<string>com.apple.share-services</string>
</dict>
添加也很重要:
<key>NSExtensionActivationSupportsText</key>
<true/>
我目前不知道为什么。
我在官方文档中找到了这个:NSExtensionActivationSupportsText:包括这个键以向系统和其他应用表明您的应用支持文本。
非常感谢。
只有 safari 使用这个数组 NSItemProvider = [[NSExtensionItem 附件] firstObject]; 其他浏览器使用 API NSItemProvider = [[NSExtensionItem 附件] objectAtIndex:1];