web-dev-qa-db-ja.com

[UIActivityViewControllerexcludedActivityTypes]からUIActivityTypePostToFacebookを除外することはできません

FacebookやTwitter共有などのネイティブ共有機能の一部を除外するUIActivityViewControllerを作成したいと思います。ただし、Facebookの共有はShareExtentionとして引き続き利用できます。

私は以下を作成します:

activityViewController = [[UIActivityViewController alloc] initWithActivityItems:activityItems  applicationActivities:applicationActivities];

除外されたアクティビティタイプを設定してFacebookを除外しました。

activityViewController.excludedActivityTypes = @[
                                                 UIActivityTypeAddToReadingList,
                                                 UIActivityTypeAssignToContact,
                                                 UIActivityTypePrint,
                                                 UIActivityTypeSaveToCameraRoll,
                                                 UIActivityTypeCopyToPasteboard,
                                                 UIActivityTypeAirDrop,
                                                 UIActivityTypePostToFacebook,
                                                 UIActivityTypePostToTwitter
                                                 ];

IPhoneで実行すると、除外されているにもかかわらずFacebookアイコンが表示されます。

これがどのように発生しているかを調査すると、アクティビティコントローラーの完了ハンドラーがUIActivityTypePostToFacebookではなくactivityType = com.facebook.Facebook.ShareExtensionを返していることがわかります。また、アクティビティコントローラーで[その他]ボタンを選択すると、共有規則を利用する他のアプリと同様にFacebookの切り替えがあります。

Twitterが使用されていないのにFacebookがshareExtentionを使用しているのはなぜですか。また、除外されたアクティビティを使用してFacebookを除外できないのはなぜですか。

注:これを複数のデバイスでテストしましたが、問題は8.1.3を実行している1つのデバイスでのみ発生します。

ありがとう

30
BROK3N S0UL

この方法を試してください

// sharing items in an array lets say sharingItems
NSArray *sharingItems = @[@"hello", @"how", @"are", @"You."];

//making UIActivityViewController object lets say avc
UIActivityViewController *avc = [[UIActivityViewController alloc] initWithActivityItems:sharingItems applicationActivities:nil];

//exclude UIActivityTypePostToFacebook 
avc.excludedActivityTypes = @[UIActivityTypePostToFacebook];

//presenting UIActivityViewController in our case avc
[self presentViewController:avc animated:YES completion:nil];

下の写真を参照してください、Facebookは含まれていません

In image Facebook not included

コメントするときavc.excludedActivityTypes = @[UIActivityTypePostToFacebook];Facebookが共有オプションで再び表示されるようになります

When commenting avc.excludedActivityTypes = @[UIActivityTypePostToFacebook]; Facebook again becomes visible in share option

5
shashi Gupta
//Hope this helps . This is how it is done in Swift 3.

  //  When Including the FB Option the code is as follow:

      func otherSharing() {

            let activityItem: [AnyObject] = [returnFinalImage() as AnyObject]


            let avc = UIActivityViewController(activityItems: activityItem as [AnyObject], applicationActivities: nil)
             avc.excludedActivityTypes = [UIActivityType.addToReadingList, UIActivityType.assignToContact, UIActivityType.print, UIActivityType.saveToCameraRoll, UIActivityType.copyToPasteboard, UIActivityType.airDrop, UIActivityType.postToTwitter]
            self.present(avc, animated: true, completion: nil)
        }

    //When Excluding the FB Option the code is as follow:

        func otherSharing() {

            let activityItem: [AnyObject] = [returnFinalImage() as AnyObject]


            let avc = UIActivityViewController(activityItems: activityItem as [AnyObject], applicationActivities: nil)
             avc.excludedActivityTypes = [UIActivityType.addToReadingList, UIActivityType.assignToContact, UIActivityType.print, UIActivityType.saveToCameraRoll, UIActivityType.copyToPasteboard, UIActivityType.airDrop, UIActivityType.postToFacebook, UIActivityType.postToTwitter]
            self.present(avc, animated: true, completion: nil)
        }

    //I have Added Screen shot : [![enter image description here][1]][1]


      [1]: https://i.stack.imgur.com/IGzqC.jpg
0
Swifty Codes