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つのデバイスでのみ発生します。
ありがとう
この方法を試してください
// 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は含まれていません
コメントするときavc.excludedActivityTypes = @[UIActivityTypePostToFacebook];
Facebookが共有オプションで再び表示されるようになります
//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