In-App purchase hosted content

LeChatNoirLeChatNoir Membre, Modérateur
octobre 2013 modifié dans Actualités #1

Salut,


 


Je découvre avec joie que depuis iOS6, les achats In-App peuvent encapsuler du contenu qui sera hébergé chez Apple.


 


C'est plutôt cool car plus besoin de serveur pour distribuer les fichiers et plus besoin de toute la partie sécurisation avant de délivrer le contenu  :D


 


Comme j'ai un peu tâtonné pour trouver la doc, voilà  un article plutôt simple et bien fait sur la chose :


http://www.techotopia.com/index.php/Configuring_and_Creating_App_Store_Hosted_Content_for_iOS_6_In-App_Purchases#Configuring_an_Application_for_In-App_Purchase_Hosted_Content


 


C'est assez simple au final :


  • pour un item In-App, on créer un projet XCode de type "In-App", 
  • on met le bon product ID (le même que dans la section ITC),
  • on ajoute les fichiers désirés (pas plus de 2 Go)
  • on archive et hop, on distribue.

J'ai pas encore exploré la suite mais en gros, quand on a fait un paiement, y a plus qu'à  utiliser la méthode startDownloads:.


 


Voilà  encore une fonctionnalité qui justifie le coût de 80 euros par an   ::)

Réponses

  • Ah oui, ça c'est vraiment intéressant ! Merci kat.
  • LeChatNoirLeChatNoir Membre, Modérateur
    octobre 2013 modifié #3

    Bon, alors cette fois, j'ai avancé sur le "hosted download".


     


    La doc étant plus que spartiate, j'ai encore un peu galéré.


     


    Voilà  donc les choses à  savoir :


    • une fois que votre transaction est en mode SKPaymentTransactionStatePurchased, vous allez avoir accès au download (pas avant)
    • A ce moment là , ne surtout pas faire de [[SKPaymentQueue defaultQueue] finishTransaction:votreTransaction] car sinon, plus accès au dl
    • au lieu de faire le finish, vous allez lancer le dl  via un simple [[SKPaymentQueue defaultQueue] startDownloads:transaction.downloads];
    • la méthode delegate - (void)paymentQueue:(SKPaymentQueue *)queue updatedDownloads:(NSArray *)downloads sera appelée au fur et à  mesure du dl
    • Vous en profitez pour maj votre barre de progression
    • Et vous tester l'état du dl (terminé, cancelé, etc)
    • Dans le cas du terminé :     if (dl.downloadState==SKDownloadStateFinished)
    • Alors là , il faut récupérer le dl.contentURL et jouer avec pour retrouver les fichiers tels que :

    NSString *path = [dl.contentURL path];
    // files are in Contents directory
    path = [path stringByAppendingPathComponent:@Contents];

    NSFileManager *fileManager = [NSFileManager defaultManager];
    NSError *error = nil;
    NSArray *files = [fileManager contentsOfDirectoryAtPath:path error:&error];
    // NSString *dir = [MyConfig downloadableContentPathForProductId:download.contentIdentifier]; // not written yet

    for (NSString *file in files) {
    NSLog(@FICHIER %@",file);
    }

    • et bien penser à  [[SKPaymentQueue defaultQueue] finishTransaction:savedTransaction];
       

    And "Voilà " :)


    Un truc à  savoir aussi : vous pouvez mettre à  jour votre In-App content. Suffit de relivrer le pkg en incrémentant sa version. Par contre, attention, un utilisateur l'ayant déjà  téléchargé ne sera pas informé qu'il a été mis à  jour. A votre appli de le gérer en comparant par exemple le numéro de version (qui est accessible) ou en le gérant par ailleurs (via votre système de synchro).


     


    Et à  ce moment là , il faut utiliser la restauration pour re-télécharger le contenu.


     


    Donc pas forcément trivial mais ça reste plus simple que d'avoir un serveur perso.


    ++


     


    Source : http://xinsight.ca/blog/iap-content-download-in-ios6/


  • LeChatNoirLeChatNoir Membre, Modérateur
    octobre 2013 modifié #4

    Et c'est décidément un week end bonnes découvertes ! Apple a effectivement récemment changé un peu les règles InApp en autorisant d'avoir des "achats" in-app gratuits !


     


    On pourrait penser que c'est ridicule mais ça prend tout son sens avec le "Hosted content". Si vous proposez des items gratuits et des items payants, il fallait du code pour gérer le payant en mode inApp et du code pour gérer les items gratuits autrement.


     


    Maintenant, c'est fini  :D


     


    2eme intérêt : faire des offres exceptionnelles sur les inApp. Genre : aujourd'hui, achetez ce truc gratuitement. Aujourd'hui seulement !


     


    Smy va pouvoir offrir des thermomètres supersonique permettant à  ses utilisateurs de savoir s'ils se transforment en loup-garous ^^


     


      <3 </p>

  • C'est décidément très intéressant. Est-il possible d'utiliser ce système avec le kiosque pour distribuer les exemplaires d'une revue numérique ?
  • LeChatNoirLeChatNoir Membre, Modérateur

    t'aurai pas comme projet de monter un nouveau magazine toi ? ;)


     


    Honnêtement, je ne sais pas. Je ne connais pas bien Newsstand... Je ne sais pas quelles latitude à  une appli de ce format.

  • LeChatNoirLeChatNoir Membre, Modérateur
    octobre 2013 modifié #7

    Ceci dit, ici, ils parlent d'In-App....


     


    https://developer.apple.com/newsstand/


Connectez-vous ou Inscrivez-vous pour répondre.