web-dev-qa-db-fra.com

Comment afficher la feuille d'action de partage iOS 6 par défaut avec les options de partage disponibles?

Certaines applications affichent une feuille d'action par défaut dans iOS 6 avec des options de partage.

Cadre social n'a que deux classes, une pour la composition et l'autre pour la demande.

Ce que j’ai trouvé concerne la composition pour un service particulier avec SLComposeViewController et avant de montrer cela, je dois demander à la main si le service est disponible. Et puis je dois aussi créer ma propre feuille d'action avec ses propres icônes.

Comment ces applications affichent-elles cette feuille d'action des options de partage par défaut dans iOS 6? Ou utilisent-ils un framework open source?

95
openfrog

Le IActivityViewController indiqué dans l'autre réponse rend cela trivial. Tout ce que vous avez à faire est de spécifier le texte/l'image/l'URL que vous souhaitez partager et de présenter le contrôleur de vue d'activité de manière modale et iOS affichera automatiquement tous les services de partage applicables. Exemples:

Objectif c

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

Swift

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)
}
223
Mick MacCallum

Ajoutez ceci pour utiliser le 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];
}
39
Davide