Domanda

Voglio avere una funzione nella mia app in cui l'utente può inviare un'e-mail a un amico con l'URL di iTunes alla mia applicazione. Come è possibile?

Grazie.

È stato utile?

Soluzione

Invece degli URL lunghi e confusi che di solito vedi, puoi creare collegamenti App Store che sono molto più semplici e logici. ITunes Store ha un formato URL nascosto che è molto più logico. A seconda di ciò a cui ti stai collegando, devi solo creare un URL in uno di questi formati:

  1. Nome dell'artista o sviluppatore dell'App Store o nome dello sviluppatore dell'App Store: http://itunes.com/Artist_Or_Developer_Name
  2. Nome album: http://itunes.com/Artist_Name/Album_Name
  3. App: http://itunes.com/app/App_Name
  4. Film: http://itunes.com/movie/Movie_Title
  5. TV: http://itunes.com/tv/Show_Title

Includi solo un URL di questo formato nel corpo dell'email che crei.

(Nota che gli spazi potrebbero causare problemi, ma ho scoperto che ometterli del tutto ha funzionato per me - http: // itunes .com / app / FrootGroove reindirizza all'app chiamata " Froot Groove " ;.)

(Nota anche che se questo non funziona per te, il creatore di collegamenti iTunes è qui )

Il tuo codice sarà simile a questo (estratto dal mio, reso anonimo e non testato)

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

Puoi fare cose migliori in iPhone 3.0, ma non posso ancora parlarne.

Altri suggerimenti

In OS 3.0 è possibile utilizzare il framework MessageUI per farlo senza uscire dall'app (utilizzando il codice di Jane come fallback per i dispositivi precedenti alla 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];
}

Nota che la tua classe deve adottare il protocollo MFMailComposeViewControllerDelegate . Puoi anche includere allegati, utilizzare HTML nel corpo e altro.

Ora puoi utilizzare appstore.com/APP_NAME per avviare un'app in iTunes. Funziona sul desktop e sui dispositivi iOS. Questo non è affidabile come altri metodi tuttavia. Vedi la risposta qui Come creare l'URL di vanità per l'app Apple Store?

Questo codice genera automaticamente il link dell'app store in base al nome dell'app, non è necessario nient'altro, trascina & amp; Drop :

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);

Ti dà un link come http://itunes.com/app/angrybirds

A proposito, il link all'applicazione tramite il suo ID può essere trovato visitando l'App Store per la tua applicazione e facendo clic su " Dillo ad un amico " - quindi invia un'email a te stesso. Ho trovato questo molto informativo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top