2017-05-02 13 views
10

アプリのiOS共有拡張機能に問題があります。シェアエクステンションInfo.plistに次のコードがあります。iOS共有拡張機能が表示されない/ URLを受信できない

大きな問題は、Google Chrome、NYTimes、WSJなどの多くのアプリに拡張機能が表示されないことです。いずれもWebページまたはWeb URLのいずれかを提供する必要があります。

私はNSExtensionActivationRule dictに以下を追加する必要があるとお読みになりました。

<key>NSExtensionActivationSupportsText</key> 
<true/> 

これを追加すると、共有拡張が上記のアプリに表示されますが、拡張機能に文字列が返されます。たとえば、私がGoogle Chromeのapple.comに行って、自分の共有拡張子を使用すると、私のアプリが本当にサポートしていない文字列としてAppleが文字列として提供されます。 URLに何らかのタイプのものを提供する必要があります。また、NYTimesアプリでは、記事の見出しを内線番号に送信するだけです。

拡張機能はSafariで完全に機能します。特定の第三者アプリケーションではありません。

以下は、内線番号のスワイプファイルでURLを受信するためのメインコードです。

if let item = extensionContext?.inputItems.first as? NSExtensionItem { 
    if let itemProvider = item.attachments?.first as? NSItemProvider { 
     if itemProvider.hasItemConformingToTypeIdentifier("public.url") { 
      itemProvider.loadItem(forTypeIdentifier: "public.url", options: nil, completionHandler: { (url, error) -> Void in 
       if let shareURL = url as? NSURL { 
        print (shareURL.absoluteString!) 

そこから、私のアプリケーションとしてURLを処理する必要があります。

は、私はそれをテストするためにいくつか他のものと一緒に public.textpublic.urlから上記の少しのコードを変更し NSExtensionActivationSupportsTextオプションを追加すると、それだけでスーパー役に立たない文字列を返していました。

NYTimesでも、記事の見出しだけでなくURLを挑戦するGoogle Chromeのオプションがあるため、これらのアプリケーションからURLを取得することは可能です。そのURLを取得する方法に関するアイデアですか?

答えて

6

私はこれを使用するためにあなたを示唆しているであろう:

<key>NSExtension</key> 
<dict> 
    <key>NSExtensionAttributes</key> 
    <dict> 
     <key>NSExtensionActivationRule</key> 
     <string> 
    SUBQUERY (
     extensionItems, 
     $extensionItem, 
     SUBQUERY (
      $extensionItem.attachments, 
      $attachment, 
      ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO "public.url" 
    )[email protected] == 1 
)[email protected] == 1 
     </string> 
    </dict> 
    <key>NSExtensionMainStoryboard</key> 
    <string>MainInterface</string> 
    <key>NSExtensionPointIdentifier</key> 
    <string>com.apple.share-services</string> 
</dict> 

添付ファイルを取得するためにあなたのコードを考慮すると、あなただけの最初inputItemsと最初の添付ファイルをチェックしている、あなたは両方のケースでのforeachループを持っているとのすべてをチェックする必要がありますそれら。

+0

コード例で次のエラーメッセージが表示されます。 '(null): 'Extension/Info.plistの共有'の内容を解析できませんでした:正しい形式でないため、データを読み取れませんでした。 '。より詳細な情報を提供し、そのコードが機能する理由を説明できる場合にも役立ちます。そのエラーメッセージが出て以来、まだ動作しているかどうかはわかりません。 –

+0

@CharlieFishこれはWindowsのXamarinから私のプロジェクトからコピーされています。 Windowsの改行文字がその問題を引き起こす可能性があるので、行ごとにコピーしようとしますが、XcodeでMac上で最終バージョンを正しくコンパイルするように機能するはずです。おそらく、コピーと貼り付けに間違ったことがあります。 –

+0

@CharlieFish考慮の説明 - Chromeはデータをその形式で設定しません。 Chromeの場合、もう1つのデータ形式を追加する必要があります(私は信じているプレーンテキスト)。しかし、それでもすべてのアプリで動作するわけではありません。アップルニュース。これは、実際にはURL付きの添付ファイルが1つしかない限り、アプリに動作するように指示します。 –

関連する問題