Appstore como vista modal en iOS6


Me di cuenta de que cuando el usuario toca un enlace app store en la aplicación de correo iOS6, mail abre una vista modal que representa la app store en lugar de cambiar a la App Store como lo hacía en versiones anteriores.

¿Apple proporciona acceso a esta capacidad, o es exclusiva de sus programas integrados?


Nota: Si tiene iOS 6 y desea probarlo, simplemente abra la appstore y la aplicación de correo electrónico para usted.

Author: Brian Cain, 2012-09-18

3 answers

Agregué este método como una categoría a UIViewController, pero puedes reutilizarlo para tus propias necesidades. El ID de la tienda de aplicaciones es el número grande en la URL de la tienda de aplicaciones. Asegúrese de importar el marco StoreKit y el archivo de encabezado!

@import StoreKit;

- (void)presentAppStoreForID:(NSNumber *)appStoreID withDelegate:(id<SKStoreProductViewControllerDelegate>)delegate
{
    if(NSClassFromString(@"SKStoreProductViewController")) { // Checks for iOS 6 feature.

        SKStoreProductViewController *storeController = [[SKStoreProductViewController alloc] init];
        storeController.delegate = delegate; // productViewControllerDidFinish

        // Example App Store ID (e.g. for Words With Friends)
        // @322852954

        [storeController loadProductWithParameters:@{ SKStoreProductParameterITunesItemIdentifier: appStoreID }
                                   completionBlock:^(BOOL result, NSError *error) {
            if (result) {
                [self presentViewController:storeController animated:YES completion:nil];
            } else {
                [[[UIAlertView alloc] initWithTitle:@"Uh oh!" message:@"There was a problem opening the app store" delegate:nil cancelButtonTitle:@"Ok" otherButtonTitles: nil] show];
            }
        }];

    } else { // Before iOS 6, we can only open the App Store URL
        [[UIApplication sharedApplication] openURL:[NSURL URLWithString:[NSString stringWithFormat:@"http://itunes.apple.com/app/id%@",appStoreID]]];
    }
}
 44
Author: MaxGabriel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-05-18 20:31:42

Parece que esto se introduce en IOS 6 como StoreKit, específicamente SKITunesProductViewController que le permite presentar contenidos de iTunes (aplicaciones, música, libros, etc.).) dentro de su aplicación para que el usuario compre directamente.

 3
Author: alphageek,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-10-01 21:34:58

Hay un plugin para el manejo de enlaces de afiliados aquí: https://github.com/adeven/AEProductController

O puedes lanzar el tuyo primero abriendo el enlace de afiliado en la aplicación (tal como lo harías antes de abrir la aplicación iTunes Store directamente), siguiendo la Q&A Técnica de Apple QA1629:

Https://developer.apple.com/library/ios/#qa/qa2008/qa1629.html

Y luego abrir el SKStoreProductViewController como MaxGabriel señaló anteriormente.

[Editar] I completé esto en mi aplicación (una aplicación de música), pero si tengo una AVAudioSession activa o deshabilito completamente toda la reproducción (para probar), las muestras de canciones en el iTunes Store modal se reproducen pero no tienen sonido. Si no tienes este problema o encuentras una solución, házmelo saber. Puede ser un error que debe ser reportado a https://bugreport.apple.com/ .

 -1
Author: Pete,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-02-07 18:44:36