ios - tela - programa para criar app gratis




Como vincular a aplicativos na loja de aplicativos (15)

Para o verão de 2015 em diante ...

-(IBAction)clickedUpdate
{
    NSString *simple = @"itms-apps://itunes.apple.com/app/id1234567890";
    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:simple]];
}

substitua 'id1234567890' por 'id' e 'seu número de dez dígitos'

  1. Isso funciona perfeitamente em todos os dispositivos .

  2. Ele vai direto para a loja de aplicativos, sem redirecionamentos.

  3. Está bem para todas as lojas nacionais .

  4. É verdade que você deve passar a usar loadProductWithParameters , mas se o objetivo do link for atualizar o aplicativo em que você está realmente: talvez seja melhor usar essa abordagem "antiquada".

Estou criando uma versão gratuita do meu jogo para iPhone. Eu quero ter um botão dentro da versão gratuita que leva as pessoas para a versão paga na loja de aplicativos. Se eu usar um link padrão

http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=300136119&mt=8

o iPhone abre o Safari primeiro e depois a loja de aplicativos. Eu usei outros aplicativos que abrem a loja de aplicativos diretamente, então sei que é possível.

Alguma ideia? Qual é o esquema de URL para a loja de aplicativos?


Pelo menos iOS 9 e acima

  • Abra diretamente na App Store

Um aplicativo

itms-apps://itunes.apple.com/app/[appName]/[appID]

Lista de aplicativos do desenvolvedor

itms-apps://itunes.apple.com/developer/[developerName]/[developerID]

A partir do iOS 6, é possível usar a classe SKStoreProductViewController .

Swift 3.x :

func openStoreProductWithiTunesItemIdentifier(identifier: String) {
    let storeViewController = SKStoreProductViewController()
    storeViewController.delegate = self

    let parameters = [ SKStoreProductParameterITunesItemIdentifier : identifier]
    storeViewController.loadProduct(withParameters: parameters) { [weak self] (loaded, error) -> Void in
        if loaded {
            // Parent class of self is UIViewContorller
            self?.present(storeViewController, animated: true, completion: nil)
        }
    }
}

func productViewControllerDidFinish(_ viewController: SKStoreProductViewController) {
    viewController.dismiss(animated: true, completion: nil)
}
// Usage:
openStoreProductWithiTunesItemIdentifier(identifier: "13432")

Você pode obter o identificador de item itunes do aplicativo assim: (em vez de um estático)

Swift 3.2

var appID: String = infoDictionary["CFBundleIdentifier"]
var url = URL(string: "http://itunes.apple.com/lookup?bundleId=\(appID)")
var data = Data(contentsOf: url!)
var lookup = try? JSONSerialization.jsonObject(with: data!, options: []) as? [AnyHashable: Any]
var appITunesItemIdentifier = lookup["results"][0]["trackId"] as? String
openStoreProductViewController(withITunesItemIdentifier: Int(appITunesItemIdentifier!) ?? 0)

Swift 2.x :

func openStoreProductWithiTunesItemIdentifier(identifier: String) {
    let storeViewController = SKStoreProductViewController()
    storeViewController.delegate = self

    let parameters = [ SKStoreProductParameterITunesItemIdentifier : identifier]
    storeViewController.loadProductWithParameters(parameters) { [weak self] (loaded, error) -> Void in
        if loaded {
            // Parent class of self is UIViewContorller
            self?.presentViewController(storeViewController, animated: true, completion: nil)
        }
    }
}

func productViewControllerDidFinish(viewController: SKStoreProductViewController) {
    viewController.dismissViewControllerAnimated(true, completion: nil)
}
// Usage
openStoreProductWithiTunesItemIdentifier("2321354")

objetivo-C :

static NSInteger const kAppITunesItemIdentifier = 324684580;
[self openStoreProductViewControllerWithITunesItemIdentifier:kAppITunesItemIdentifier];

- (void)openStoreProductViewControllerWithITunesItemIdentifier:(NSInteger)iTunesItemIdentifier {
    SKStoreProductViewController *storeViewController = [[SKStoreProductViewController alloc] init];

    storeViewController.delegate = self;

    NSNumber *identifier = [NSNumber numberWithInteger:iTunesItemIdentifier];

    NSDictionary *parameters = @{ SKStoreProductParameterITunesItemIdentifier:identifier };
    UIViewController *viewController = self.window.rootViewController;
    [storeViewController loadProductWithParameters:parameters
                                   completionBlock:^(BOOL result, NSError *error) {
                                       if (result)
                                           [viewController presentViewController:storeViewController
                                                              animated:YES
                                                            completion:nil];
                                       else NSLog(@"SKStoreProductViewController: %@", error);
                                   }];

    [storeViewController release];
}

#pragma mark - SKStoreProductViewControllerDelegate

- (void)productViewControllerDidFinish:(SKStoreProductViewController *)viewController {
    [viewController dismissViewControllerAnimated:YES completion:nil];
}

Você pode obter kAppITunesItemIdentifier (identificador de item itunes do aplicativo) assim: (em vez de um estático)

NSDictionary* infoDictionary = [[NSBundle mainBundle] infoDictionary];
    NSString* appID = infoDictionary[@"CFBundleIdentifier"];
    NSURL* url = [NSURL URLWithString:[NSString stringWithFormat:@"http://itunes.apple.com/lookup?bundleId=%@", appID]];
    NSData* data = [NSData dataWithContentsOfURL:url];
    NSDictionary* lookup = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil];
    NSString * appITunesItemIdentifier =  lookup[@"results"][0][@"trackId"]; 
    [self openStoreProductViewControllerWithITunesItemIdentifier:[appITunesItemIdentifier intValue]];

Apesar de haver muitas respostas aqui, nenhuma das sugestões de links para os aplicativos dos desenvolvedores parece funcionar mais.

Quando visitei pela última vez, consegui que funcionasse usando o formato:

itms-apps://itunes.apple.com/developer/developer-name/id123456789

Isso não funciona mais, mas remover o nome do desenvolvedor:

itms-apps://itunes.apple.com/developer/id123456789

Criar um link pode se tornar um problema complexo ao oferecer suporte a vários sistemas operacionais e plataformas múltiplas. Por exemplo, os WebObjects não são suportados no iOS 7 (alguns deles), alguns links que você cria abririam outro armazenamento de país e depois o usuário etc.

Existe uma biblioteca de código aberto chamada iLink que pode ajudá-lo.

As vantagens dessa biblioteca são que os links seriam encontrados e criados no tempo de execução (a biblioteca verificaria o ID do aplicativo e o SO em execução e descobriria qual link deveria ser criado). O melhor ponto nisso é que você não precisa configurar quase nada antes de usá-lo para que esteja livre de erros e funcione sempre. Isso é ótimo também se você tiver poucos destinos no mesmo projeto para não precisar lembrar qual ID ou link de aplicativo usar. Essa biblioteca também solicitaria ao usuário que atualizasse o aplicativo se houvesse uma nova versão na loja (isso é embutido e você desliga isso por um sinalizador simples) apontando diretamente para a página de atualização do aplicativo, se o usuário concordar.

Copie os 2 arquivos da biblioteca para o seu projeto (iLink.h e iLink.m).

No seu appDelegate.m:

#import "iLink.h"

+ (void)initialize
{
    //configure iLink
    [iLink sharedInstance].globalPromptForUpdate = YES; // If you want iLink to prompt user to update when the app is old.
}

e no local em que você deseja abrir a página de classificação, por exemplo, use:

[[iLink sharedInstance] iLinkOpenAppPageInAppStoreWithAppleID: YOUR_PAID_APP_APPLE_ID]; // You should find YOUR_PAID_APP_APPLE_ID from iTunes Connect 

Não se esqueça de importar o iLink.h no mesmo arquivo.

Há um documento muito bom para toda a biblioteca e um exemplo de projetos para iPhone e Mac.


De acordo com QA1629 você precisa usar

appStoreLink = "https://itunes.apple.com/us/app/apple-store/id375380948?mt=8"  

ou

SKStoreProductViewController 

Este código gera o link da App Store no iOS

NSString *appName = [NSString stringWithString:[[[NSBundle mainBundle] infoDictionary]   objectForKey:@"CFBundleName"]];
NSURL *appStoreURL = [NSURL URLWithString:[NSString stringWithFormat:@"itms-apps://itunes.com/app/%@",[appName stringByReplacingOccurrencesOfString:@" " withString:@""]]];

Substitua itms-apps por http no Mac:

NSURL *appStoreURL = [NSURL URLWithString:[NSString stringWithFormat:@"http:/itunes.com/app/%@",[appName stringByReplacingOccurrencesOfString:@" " withString:@""]]]; 

URL aberto no iOS:

[[UIApplication sharedApplication] openURL:appStoreURL];

Mac:

[[NSWorkspace sharedWorkspace] openURL:appStoreURL];

Isso está funcionando e ligando diretamente no ios5

NSString *iTunesLink = @"http://itunes.apple.com/app/baseball-stats-tracker-touch/id490256272?mt=8";  
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:iTunesLink]];

Para o Xcode 9.1 e Swift 4:

  1. Importar o StoreKit:
import StoreKit

2.Conforme o protocolo

SKStoreProductViewControllerDelegate

3.Implementar o protocolo

func openStoreProductWithiTunesItemIdentifier(identifier: String) {
    let storeViewController = SKStoreProductViewController()
    storeViewController.delegate = self

    let parameters = [ SKStoreProductParameterITunesItemIdentifier : identifier]
    storeViewController.loadProduct(withParameters: parameters) { [weak self] (loaded, error) -> Void in

        if loaded {
            // Parent class of self is UIViewContorller
            self?.present(storeViewController, animated: true, completion: nil)
        }
    }   
}

3,1

func productViewControllerDidFinish(_ viewController: SKStoreProductViewController) {
    viewController.dismiss(animated: true, completion: nil)
}
  1. Como usar:
openStoreProductWithiTunesItemIdentifier(identifier: "here_put_your_App_id")

Nota:

É muito importante inserir o ID exato do seu aplicativo. Porque isso causa erro (não mostra o log de erro, mas nada funciona bem por causa disso)



Se você deseja criar um link para os aplicativos de um desenvolvedor e o nome do desenvolvedor tiver pontuação ou espaços (por exemplo, Development Company, LLC), crie seu URL da seguinte forma:

itms-apps://itunes.com/apps/DevelopmentCompanyLLC

Caso contrário, ele retorna "Esta solicitação não pode ser processada" no iOS 4.3.3


Se você quiser abrir um aplicativo diretamente na App Store, use:

itms-apps: // ...

Dessa forma, ele abrirá diretamente o aplicativo da App Store no dispositivo, em vez de ir primeiro para o iTunes e, em seguida, abrir somente a App Store (ao usar apenas itms: //)

Espero que ajude.

EDIT: abril de 2017. itms-apps: // realmente funciona novamente no iOS10. Eu testei isso.

EDIT: abril de 2013. Isso não funciona mais no iOS5 e acima. Apenas use

https://itunes.apple.com/app/id378458261

e não há mais redirecionamentos.


Tente assim

http://itunes.apple.com/lookup?id= "seu ID de aplicativo aqui" retornará json. A partir disso, encontre a chave " trackViewUrl " e o valor é o URL desejado. use este url (apenas substitua https:// por itms-apps:// ) itms-apps:// funciona muito bem.

Por exemplo, se o seu ID de aplicativo for xyz, acesse este link http://itunes.apple.com/lookup?id=xyz

Em seguida, localize a URL da chave " trackViewUrl " .Esta é a URL do seu aplicativo na loja de aplicativos e use esse URL no xcode

NSString *iTunesLink = @"itms-apps://itunes.apple.com/us/app/Your app name/id Your app ID?mt=8&uo=4";
        [[UIApplication sharedApplication] openURL:[NSURL URLWithString:iTunesLink]];

obrigado


Várias respostas sugerem o uso de 'itms' ou 'itms-apps', mas essa prática não é especificamente recomendada pela Apple. Eles só oferecem o seguinte caminho para abrir a App Store:

Listagem 1 Iniciando o App Store a partir de um aplicativo iOS

NSString *iTunesLink = @"https://itunes.apple.com/us/app/apple-store/id375380948?mt=8";
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:iTunesLink]];

Consulte https://developer.apple.com/library/ios/qa/qa1629/_index.html última atualização de março de 2014 a partir desta resposta.

Para aplicativos que suportam iOS 6 e superior, a Apple oferece um mecanismo no aplicativo para apresentar a App Store: SKStoreProductViewController

- (void)loadProductWithParameters:(NSDictionary *)parameters completionBlock:(void (^)(BOOL result, NSError *error))block;

// Example:
SKStoreProductViewController* spvc = [[SKStoreProductViewController alloc] init];
spvc.delegate = self;
[spvc loadProductWithParameters:@{ SKStoreProductParameterITunesItemIdentifier : @(364709193) } completionBlock:^(BOOL result, NSError *error){ 
    if (error)
        // Show sorry
    else
        // Present spvc
}];

Observe que no iOS6, o bloco de conclusão pode não ser chamado se houver erros. Este parece ser um bug que foi resolvido no iOS 7.


Editado em 2016-02-02

A partir do iOS 6, foi introduzida a classe SKStoreProductViewController . Você pode vincular um aplicativo sem sair do seu aplicativo. O snippet de código no Swift 3.x / 2.xe o Objective-C estão here .

Um objeto SKStoreProductViewController apresenta uma loja que permite ao usuário comprar outras mídias na App Store. Por exemplo, seu aplicativo pode exibir a loja para permitir que o usuário compre outro aplicativo.

De notícias e anúncios para desenvolvedores da Apple .

Direcione os clientes diretamente para seu aplicativo na App Store com os links do iTunes Com os links do iTunes, você pode oferecer aos seus clientes uma maneira fácil de acessar seus aplicativos na App Store diretamente de seu website ou campanhas de marketing. Criar um link do iTunes é simples e pode ser feito para direcionar os clientes para um único aplicativo, todos os seus aplicativos ou para um aplicativo específico com o nome da empresa especificado.

Para enviar clientes para um aplicativo específico: http://itunes.com/apps/appname

Para enviar clientes para uma lista de aplicativos que você tem na App Store: http://itunes.com/apps/developername

Para enviar clientes para um aplicativo específico com o nome da sua empresa, incluído no URL: http://itunes.com/apps/developername/appname

Notas Adicionais:

Você pode substituir http:// com itms:// ou itms-apps:// para evitar redirecionamentos.

Para informações sobre nomenclatura, consulte Apple QA1633:

https://developer.apple.com/library/content/qa/qa1633/_index.html .

Editar (a partir de janeiro de 2015):

Os links itunes.com/apps devem ser atualizados para appstore.com/apps. Veja QA1633 acima, que foi atualizado. Um novo QA1629 sugere estas etapas e código para iniciar a loja a partir de um aplicativo:

  1. Inicie o iTunes no seu computador.
  2. Procure o item que você deseja vincular.
  3. Clique com o botão direito do mouse ou clique com a tecla Control pressionada no nome do item no iTunes e escolha "Copiar URL da iTunes Store" no menu pop-up.
  4. Em seu aplicativo, crie um objeto NSURL com o URL do iTunes copiado e passe esse objeto para o método openURL : do openURL para abrir o item na App Store.

Código de amostra:

NSString *iTunesLink = @"itms://itunes.apple.com/us/app/apple-store/id375380948?mt=8";
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:iTunesLink]];

Swift 3.0

   let urlStr = "itms://itunes.apple.com/us/app/apple-store/id375380948?mt=8"
    if #available(iOS 10.0, *) {
        UIApplication.shared.open(URL(string: urlStr)!, options: [:], completionHandler: nil)

    } else {
        UIApplication.shared.openURL(URL(string: urlStr)!)
    }




app-store