Общий доступ по умолчанию в iOS 7

Я видел этот формат (изображение показано ниже) опции совместного использования в большинстве приложений iOS, поддерживающих iOS 7. Есть ли код / ​​структура по умолчанию, доступная для реализации этой опции совместного использования, как показано на изображении ниже?


person Spidy    schedule 30.10.2013    source источник
comment
Ознакомьтесь с этим руководством: appcoda.com/ios7-airdrop-programming-tutorial   -  person Sakiboy    schedule 16.08.2014


Ответы (6)


Вы ищете UIActivityViewController.

Поскольку вы задали общий вопрос, я не могу ничего сделать, кроме как дать вам ссылку на документация

person Abizern    schedule 30.10.2013

В дополнение к принятому ответу небольшой фрагмент кода примера

- (void)shareText:(NSString *)text andImage:(UIImage *)image andUrl:(NSURL *)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];
    }

Позвоните shareText, оставьте то, чем вы не хотите делиться, на nil.

[self shareText:@"Hello world" andImage:nil andUrl:nil];
person sjaak bakker    schedule 25.01.2016

Контроллер на опубликованном вами изображении - это UIActivitiyViewController this это ссылка на документацию по классу

person oiledCode    schedule 30.10.2013

хороший пример кода: Как отобразить лист действий по предоставлению общего доступа в iOS 6 по умолчанию с доступными параметрами общего доступа?

Я знаю, что этот вопрос относится к iOS 7, и в примере кода указана iOS 6, но, AFAICT, они очень похожи, пример кода может оказаться таким же полезным, как и я.

person GraehamF    schedule 21.05.2014

UIActivityViewController - это то, что вы ищете.

Вы можете указать либо товары, либо приложения

UIActivityViewController *actCont = [[UIActivityViewController alloc] initWithActivityItems:activityItems applicationActivities:nil];
person Sumit utreja    schedule 30.10.2013

Просто используйте следующий код для общего доступа по умолчанию. Вы можете добавить больше элементов в массив shareItems в соответствии с вашими требованиями.

NSMutableArray *shareItems = [[NSMutableArray alloc] initWithObjects: 
                                 @"Hello", 
                                 [UIImage imageNamed:@"your_image.png"], 
                                 @"http://google.com/", nil];
[self shareItemToOtherApp:shareItems];

Следующий метод предназначен для передачи текста или изображения по умолчанию в другие приложения: -

-(void)shareItemToOtherApp:(NSMutableArray *)shareItems{
    UIActivityViewController *shareController = [[UIActivityViewController alloc]
                                                 initWithActivityItems: shareItems applicationActivities :nil];

    [shareController setValue:@"Sharing" forKey:@"subject"];
    shareController.excludedActivityTypes = @[UIActivityTypePostToWeibo, UIActivityTypeAssignToContact, UIActivityTypePrint, UIActivityTypeCopyToPasteboard, UIActivityTypeSaveToCameraRoll];

    shareController.completionHandler = ^(NSString *activityType, BOOL completed)
    {
        //NSLog(@" activityType: %@", activityType);
        //NSLog(@" completed: %i", completed);
    };

    [self presentViewController: shareController animated: YES completion: nil];
}

Если вы хотите создать лист Custom Sharing, используйте следующий код. Для этого вам нужно импортировать <Social/Social.h> framework.

-(void)shareOnFacebook:(id)sender {
    if ([SLComposeViewController isAvailableForServiceType:SLServiceTypeFacebook])
    {
        SLComposeViewController *faceSheet = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeFacebook];
        // NSLog(@"%@", messageField.text);//This returns the appropriate string
        [faceSheet setInitialText:@"Hellooooooo"];
        //The facebook VC appears, but initial text is not set to messageField.text
        [self presentViewController:faceSheet animated:YES completion:nil];
    }
    else
    {
        NSLog(@"Please first install Application and login in Facebook");
    }
}

-(void)shareOnTwitter:(id)sender {
    if ([SLComposeViewController isAvailableForServiceType:SLServiceTypeTwitter])
    {
        SLComposeViewController *tweetSheet = [SLComposeViewController
                                               composeViewControllerForServiceType:SLServiceTypeTwitter];
        [tweetSheet setInitialText:@"Hello"];
        [self presentViewController:tweetSheet animated:YES completion:nil];
    }
    else{
        NSLog(@"Please first install Application and login in Twitter");
    }
}

Надеюсь, это то, что вы ищете. Любые опасения вернутся ко мне. :)

person Meet Doshi    schedule 08.02.2016