web-dev-qa-db-fra.com

Partage par défaut dans iOS 7

J'ai vu ce format (Image ci-dessous) d'option de partage dans la plupart des applications iOS qui prennent en charge iOS 7. Existe-t-il un code/framework par défaut pour implémenter cette option de partage comme il est montré dans l'image ci-dessous?

57
Spidy

Ce que vous recherchez est le UIActivityViewController.

Puisque vous avez posé une question générale, je ne peux pas faire plus que vous donner un lien vers le documentation

53
Abizern

En plus de la réponse acceptée, un petit exemple de code

- (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];
    }

Appelez shareText, laissez les choses que vous ne voulez pas partager à nil.

[self shareText:@"Hello world" andImage:nil andUrl:nil];
16
sjaak bakker

Le contrôleur dans l'image que vous avez publiée est le UIActivitiyViewController ceci est un lien vers la documentation de la classe

4
elio.d

un bon exemple de code: Comment afficher la feuille d'action de partage iOS 6 par défaut avec les options de partage disponibles?

Je sais que cette question est particulière à iOS 7, et l'exemple de code spécifie iOS 6, mais AFAICT ils sont très similaires, on pourrait trouver l'exemple de code aussi utile que moi.

3
GraehamF

UIActivityViewController est ce que vous recherchez.

Vous pouvez spécifier les éléments ou les applications

UIActivityViewController *actCont = [[UIActivityViewController alloc] initWithActivityItems:activityItems applicationActivities:nil];
1
Sumit utreja

Utilisez simplement le code suivant pour Partage par défaut. Vous pouvez ajouter plus d'éléments dans le tableau shareItems selon vos besoins.

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

La méthode suivante est pour le partage par défaut du texte ou de l'image dans d'autres applications: -

-(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];
}

Si vous souhaitez créer Partage personnalisé feuille, utilisez le code suivant. Pour cela, vous devez importer <Social/Social.h> cadre.

-(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");
    }
}

J'espère que c'est ce que vous recherchez. Toute inquiétude me revient. :)

1
Meet Doshi