Question

Je souhaite disposer dans mon application d'une fonctionnalité permettant à l'utilisateur d'envoyer un courrier électronique à un ami avec l'URL iTunes de mon application. Comment est-ce possible?

Merci.

Était-ce utile?

La solution

Plutôt que les URL longues et confuses que vous voyez habituellement, vous pouvez créer des liens sur l'App Store beaucoup plus simples et logiques. L’iTunes Store a un format d’URL masqué beaucoup plus logique. En fonction de votre lien, il vous suffit de créer une URL dans l’un des formats suivants:

  1. Nom de l'artiste ou nom du développeur de l'App Store: http://itunes.com/Artist_Or_Developer_Name
  2. Nom de l'album: http://itunes.com/Artist_Name/Album_Name
  3. Applications: http://itunes.com/app/App_Name
  4. Films: http://itunes.com/movie/Movie_Title
  5. TV: http://itunes.com/tv/Show_Title

Il suffit d'inclure une URL de ce format dans le corps de l'email que vous créez.

(Notez que les espaces peuvent causer des problèmes, mais j’ai constaté que les omettre fonctionnait entièrement pour moi - http: // itunes .com / app / FrootGroove redirige vers l'application appelée "Froot Groove".)

(Notez également que si cela ne fonctionne pas pour vous, le lieur iTunes est ici )

Votre code ressemblera à ceci (extrait du mien, anonymisé et non testé)

NSString* body = [NSString stringWithFormat:@"Get my app here - %@.\n",myUrl];

#if __IPHONE_OS_VERSION_MIN_REQUIRED <= __IPHONE_2_2
[NSThread sleepForTimeInterval:1.0];
NSString* crlfBody = [body stringByReplacingOccurrencesOfString:@"\n" withString:@"\r\n"];
NSString* escapedBody = [(NSString*)CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault,  (CFStringRef)crlfBody, NULL,  CFSTR("?=&+"), kCFStringEncodingUTF8) autorelease];

NSString *mailtoPrefix = [@"mailto:xxx@wibble.com?subject=Get my app&body=" stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

// Finally, combine to create the fully escaped URL string
NSString *mailtoStr = [mailtoPrefix stringByAppendingString:escapedBody];

// And let the application open the merged URL
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:mailtoStr]];
#endif

Vous pouvez faire mieux avec l'iPhone 3.0, mais je ne peux pas en parler pour l'instant.

Autres conseils

Sous OS 3.0, vous pouvez utiliser la structure MessageUI pour le faire sans quitter l'application (en utilisant le code de Jane comme solution de secours pour les appareils antérieurs à la version 3.0):

- (void)sendEmail
{
    NSString* body = [NSString stringWithFormat:@"Get my app here - %@.\n",myUrl];

#if __IPHONE_OS_VERSION_MIN_REQUIRED <= __IPHONE_2_2
    Class mailClass = (NSClassFromString(@"MFMailComposeViewController"));
    if (mailClass != nil && [mailClass canSendMail])
    {
        MFMailComposeViewController *picker = [[MFMailComposeViewController alloc] init];
        picker.mailComposeDelegate = self;
        picker.subject = @"Get my app";
        [picker setToRecipients:[NSArray arrayWithObject:@"xxx@wibble.com"];
        [picker setMessageBody:body isHTML:NO];

        [self presentModalViewController:picker animated:NO];
        [picker release];
    } else {
        [NSThread sleepForTimeInterval:1.0];
        NSString* crlfBody = [body stringByReplacingOccurrencesOfString:@"\n" withString:@"\r\n"];
        NSString* escapedBody = [(NSString*)CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault,  (CFStringRef)crlfBody, NULL,  CFSTR("?=&+"), kCFStringEncodingUTF8) autorelease];

        NSString *mailtoPrefix = [@"mailto:xxx@wibble.com?subject=Get my app&body=" stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

        // Finally, combine to create the fully escaped URL string
        NSString *mailtoStr = [mailtoPrefix stringByAppendingString:escapedBody];

        // And let the application open the merged URL
        [[UIApplication sharedApplication] openURL:[NSURL URLWithString:mailtoStr]];
    }
#endif
}

#pragma mark -
#pragma mark Mail Composer Delegate
- (void)mailComposeController:(MFMailComposeViewController*)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError*)error 
{
    if (result == MFMailComposeResultFailed) {
        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:[error localizedDescription] message:[error localizedFailureReason] delegate:nil cancelButtonTitle:NSLocalizedString(@"OK", @"OK") otherButtonTitles:nil];
        [alert show];
        [alert release];
    }
    [self dismissModalViewControllerAnimated:YES];
}

Notez que votre classe doit adopter le protocole MFMailComposeViewControllerDelegate . Vous pouvez également inclure des pièces jointes, utiliser HTML dans le corps du texte, etc.>

Vous pouvez maintenant utiliser appstore.com/APP_NAME pour lancer une application dans iTunes. Cela fonctionne sur le bureau et sur les appareils iOS. Ce n'est pas aussi fiable que d'autres méthodes cependant. Voir la réponse ici Comment créer une URL de personnalisation pour Apple AppStore?

Ce code génère automatiquement le lien sur l'App Store en fonction du nom de l'application. Aucune autre information n'est requise, drag & amp; déposer :

NSCharacterSet *trimSet = [[NSCharacterSet characterSetWithCharactersInString:@"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLKMNOPQRSTUVWXYZ0123456789"] invertedSet];    
NSArray *trimmedAppname = [[NSString stringWithString:[[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleName"]] componentsSeparatedByCharactersInSet:trimSet];
NSString *appStoreLink = @"http://itunes.com/app/"; 
for (NSString *part in trimmedAppname) appStoreLink = [NSString stringWithFormat:@"%@%@",appStoreLink,part];
NSLog(@"App store URL:%@",appStoreLink);

Il vous donne un lien du type http://itunes.com/app/angrybirds

Soit dit en passant, vous pouvez trouver le lien vers l'application par son ID en visitant le magasin d'applications pour votre application, puis en cliquant sur le bouton "Envoyer à un ami". - puis envoyez un email à vous-même. J'ai trouvé cela très instructif.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top