Як відобразити аркуш дій щодо iOS 6 за замовчуванням із доступними параметрами спільного доступу?


97

Деякі додатки показують аркуш дій за замовчуванням в iOS 6 з опціями спільного доступу.

Social Framework має лише два класи: один для складання та один для запиту.

Що я виявив, це стосується складання певної послуги з SLComposeViewController, і перед тим, як показати це, я повинен запитати вручну, чи послуга доступна. І тоді я також повинен створити свій власний аркуш із власними значками.

Як ці програми показують цей аркуш дій дій за замовчуванням в iOS 6? Або вони використовують рамку з відкритим кодом?


Я хочу відкрити спільний аркуш із користувацьким значком, таким як wechat, weibo, qq та інтегрувати його функціональні можливості, як я можу це зробити?
Ravi Ojha

Просто перевірте це посилання також .. stackoverflow.com/a/35267035/3908884
Знайомтесь з Доші

Відповіді:


223

UIActivityViewController заявив в іншому відповіді робить це тривіально. Все, що вам потрібно зробити, - це вказати текст / зображення / URL, якими ви хочете поділитися, та представити контролер перегляду активності на модальному рівні, і iOS автоматично відобразить усі застосовні сервіси спільного доступу. Приклади:

Ціль-С

- (void)shareText:(NSString *)text andImage:(UIImage *)image andUrl:(URL *)url
{
    NSMutableArray *sharingItems = [NSMutableArray new];

    if (text) {
        [sharingItems addObject:text];
    }
    if (image) {
        [sharingItems addObject:image];
    }
    if (url) {
        [sharingItems addObject:url];
    }

    UIActivityViewController *activityController = [[UIActivityViewController alloc] initWithActivityItems:sharingItems applicationActivities:nil];
    [self presentViewController:activityController animated:YES completion:nil];
}

Швидкий

func share(sharingText: String?, sharingImage: UIImage?, sharingURL: URL?) {
    let sharingItems:[AnyObject?] = [
                                        sharingText as AnyObject,
                                        sharingImage as AnyObject,
                                        sharingURL as AnyObject
                                    ] 
    let activityViewController = UIActivityViewController(activityItems: sharingItems.compactMap({$0}), applicationActivities: nil)
    if UIDevice.current.userInterfaceIdiom == .pad {
        activityViewController.popoverPresentationController?.sourceView = view
    }
    present(activityViewController, animated: true, completion: nil)
}

6
Приємна редакція для версії Swift. Я б змінив .append (item) для елемента + =. Виглядає швидше
Ігнасіо Інглез

2
В останній версії Swift замініть AnyObject[]()на[AnyObject]()
Рубен Мартінес-молодший

5
Його функціонування, лише після входу у відповідні облікові записи в налаштуваннях (facebook / twitter), але у додатку "Фотографії" / "Примітки" варіанти доступні, навіть якщо користувач не ввійшов у систему, чи можете ви пояснити, чому це так? Або є якесь інше рішення?
Джалдіп Катре

4
Я додав редакцію для iOS 8 підтримки на iPad - вам також потрібно налаштувати програму UIActivityViewController, інакше UIPopoverControllerвона вийде з ладу present…. Наразі у мене було два відхилення від трьох в редагуванні, тож припускаючи, що його відхилено, можливо, ви могли побачити, чи хочете ви самі додати редагування. Або ні :-)
Бенджон

О, редакція цитує цю відповідь, яка пояснює все.
Бенджон

39

Додайте це, щоб використовувати UIActivityViewController.

-(IBAction)shareButtonPressed:(id)sender {

    NSLog(@"shareButton pressed");

    NSString *texttoshare = _txt; //this is your text string to share
    UIImage *imagetoshare = _img; //this is your image to share
    NSArray *activityItems = @[texttoshare, imagetoshare];    
    UIActivityViewController *activityVC = [[UIActivityViewController alloc] initWithActivityItems:activityItems applicationActivities:nil];
    activityVC.excludedActivityTypes = @[UIActivityTypeAssignToContact, UIActivityTypePrint];
    [self presentViewController:activityVC animated:TRUE completion:nil];
}

2
Бажана відповідь мені, оскільки ви також показуєте виключення.
Хосе
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.