Подтвердить что ты не робот

Не может исключать UIActivityTypePostToFacebook из [UIActivityViewController excludedActivityTypes]

Я хочу создать UIActivityViewController, который исключит некоторые из встроенных функций общего доступа, включая Facebook и Twitter Share. Но доля Facebook по-прежнему доступна как ShareExtention.

Я создаю следующее:

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

и исключить Facebook, установив исключенные типы активности.

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

При запуске на моем iPhone появляется значок Facebook, несмотря на то, что он исключен.

Исследование того, как это происходит. Я вижу, что обработчик завершения для контроллера активности возвращает activityType = com.facebook.Facebook.ShareExtension, а не UIActivityTypePostToFacebook. Также при выборе более кнопки в контроллере активности есть переключатель для Facebook, как и для других приложений, которые используют соглашение о совместном использовании.

Почему Facebook использует ShareExtention, когда Twitter нет, и почему я не могу исключить его с помощью исключенных действий?

Примечание. Я тестировал это на нескольких устройствах, но проблема существует только на одном устройстве, которое работает под управлением 8.1.3.

Спасибо

4b9b3361

Ответ 1

//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

Ответ 2

Вы можете сделать это

// 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]; this code Facebook again visible in share option