SlideShare une entreprise Scribd logo
1  sur  29
Télécharger pour lire hors ligne
Mac App Store
                           Présentation par Renaud Pradenc


                                                             céroce

vendredi 11 février 2011
Présentation du
                           Mac App Store


vendredi 11 février 2011
vendredi 11 février 2011
Même expérience que
                        sur le store iOS
                      • Achat immédiat
                      • Copie automatique dans le dossier
                           Applications
                      • Mettre l’application à la corbeille efface
                           aussi ses données



vendredi 11 février 2011
Parlons argent

                      • Commission d’Apple: 30%
                      • Remboursement: vous pouvez avoir à
                           rembourser 100% (y compris la com)

                      • Paiement dans les 45 jours si ≥ 150$


vendredi 11 février 2011
Politique de publication
                      • Pas de porno, d’attaques personnelles, de
                           racisme, de diffamation.
                      • Pas de versions de démo ou béta
                           (pas non plus le droit de mentionner
                           l'existence d’une démo).
                      • L’appli doit présenter un intérêt
                      • Pas de référence à une autre plateforme
                           logicielle

vendredi 11 février 2011
Exigences techniques
                      • Ne doit pas reposer sur des installations
                           optionnelles (Java, Rosetta, etc.)
                      • Ne pas utiliser d’API privées
                      • Doit être contenue dans un seul bundle, et
                           ne pas copier de données ailleurs
                      • Pas de kext

vendredi 11 février 2011
Interface Homme-
                                 Machine

                      • Respecter les Apple Human Interface
                           Guidelines
                      • Si l’IHM est mauvaise, l’appli pourrait être
                           rejetée




vendredi 11 février 2011
Pas de vieux restes…

                      • Pas d’installateur
                      • Pas de protection anti-pirate perso
                      • Pas de système de clé, débridage, etc.
                      • Pas de système de màj perso

vendredi 11 février 2011
Dans les détails

                      • Pas de code PowerPC
                      • Info de debug au format DWARF with dSYM
                      • Clé                      dans Info.plist
                            LSApplicationCategoryType




vendredi 11 février 2011
Fichiers
                      • L’appli n’a le droit d’écrire que dans les
                           répertoires:
                           ~/Library/Application Support/<app-identifier>
                           ~/Library/<app-identifier>
                           ~/Library/Caches/<app-identifier>
                           ~/Pictures/<app-identifier>
                           ~/Music/<app-identifier>
                           ~/Movies/<app-identifier>


                      • On peut toutefois utiliser des fichiers
                           temporaires ou les API NSUserDefaults,
                           Carnet d’adresse, etc.


vendredi 11 février 2011
Adapter une application
                       existante


vendredi 11 février 2011
Pas d’API privées,
                                on a dit !

                      • BWToolkit utilise des API privées de
                           NSTokenAttachmentCell.




vendredi 11 février 2011
Retirer le code
                             PowerPC




vendredi 11 février 2011
Utiliser les macros
                            conditionnelles

                            #ifdef MAC_APP_STORE
                            // Code spécifique au MAS

                            #else
                            // Code pour la version normale

                            #endif


vendredi 11 février 2011
Info.plist conditionnel
                                      #ifdef MAC_APP_STORE
                                      	 <key>LSMinimumSystemVersion</key>
                                      	 <string>10.6.6</string>
                                      	
                                      	 <key>LSApplicationCategoryType</key>
                                      	 <string>public.app-category.photography</
                                     string>	
                                      #else
                                      	 <key>LSMinimumSystemVersion</key>
                                      	 <string>10.5.0</string>
                                      	
                                      	 <key>SUEnableAutomaticChecks</key>
                                      	 <true/>
                                      	 <key>SUPublicDSAKeyFile</key>
                                      	 <string>dsa_pub.pem</string>
                                      	 <key>SUFeedURL</key>
                                      	 <string>http://ceroce.com/portraimatic/
                                     appcast.xml</string>
                                      #endif




vendredi 11 février 2011
Pourquoi créer une
                             nouvelle cible ?
                      • Retirer des fichiers est trop difficile avec les
                           configurations de build
                      • À retirer: Sparkle, code/ressources liées au
                           bridage.
                      • Il peut être nécessaire d’avoir des xib en
                           deux versions (ex. Préférences)



vendredi 11 février 2011
Créer une nouvelle
                                  cible
                      • Dupliquez la cible existante
                      • Bug de Xcode 3.2.5: Les chemins des
                           Frameworks contiennent des guillemets en
                           trop.
                      • Retirer le deuxième Info.plist

vendredi 11 février 2011
Vérification du reçu
                                 d’achat


vendredi 11 février 2011
Étapes de la validation

                      • Vérifier la présence du reçu
                      • Vérifier sa signature
                      • Vérifier le Bundle Identifier et la version
                      • Vérifier le GUID

vendredi 11 février 2011
Le reçu
                           .../MonAppli.app/Contents/_MASReceipt/receipt


                   Le reçu contient:
                   • Le Bundle Identifier
                   • La version de l’appli
                   • Un hâchage de
                     GUID+une valeur opaque+Bundle Identifier

               Apple fournit le format du reçu, et la manière de
               récupérer le GUID.
               Pour le reste, il faut se débrouiller tout seul.

vendredi 11 février 2011
N’installez pas asn1c

                      • Le code produit par asn1c a été intégré
                           dans le projet de Quatermain
                           https://github.com/AlanQuatermain/mac-app-store-
                           validation-sample


                      • Le code produit est dégueu.
                      • OpenSSL peut décoder du ASN1

vendredi 11 février 2011
Roddi, ton nouvel ami

                      • Roddi a codé une validation complète:
                           https://github.com/roddi/ValidateStoreReceipt


                      • Ne prenez pas le code tel quel.
                      • Obscurcissez le Bundle Identifier et la
                           version.




vendredi 11 février 2011
Soumettre l’application



vendredi 11 février 2011
Installation des
                                   certificats




                      • Copiez les 2 certifs de Système à Session
                           (sinon, Xcode ne les voit pas)

vendredi 11 février 2011
Signer l’application



                            C’est écrit en tout petit dans la
                               doc, mais il faut la signer.



vendredi 11 février 2011
Valider & soumettre



                      • Bug de Xcode 3.2.5: dans Validate… et
                           Submit…, sélectionnez
                           «Don’t Code Sign» puis le certificat «3rd
                           Party Mac Installer»

vendredi 11 février 2011
Questions ?


                           Parlez maintenant ou taisez-vous à jamais.




vendredi 11 février 2011
Références
                    Mes articles
                    http://www.renaudpradenc.com/?post/Adapter-son-appli-au-Mac-App-Store
                    http://www.renaudpradenc.com/?post/Mac-App-Store%3A-vérifier-le-reçu
                    http://www.renaudpradenc.com/?post/Mac-App-Store%3A-soumettre-l-application


                    Le projet de Roddi
                    https://github.com/roddi/ValidateStoreReceipt


                    Le projet d’Alan Quatermain
                    https://github.com/AlanQuatermain/mac-app-store-validation-sample


                    Les règles du magasin
                    http://developer.apple.com/appstore/mac/resources/approval/guidelines.html


                    Les exigences techniques
                    http://developer.apple.com/devcenter/mac/documents/submitting.html


                    Validation des reçus                                                          céroce
                    http://developer.apple.com/devcenter/mac/documents/validating.html




vendredi 11 février 2011

Contenu connexe

En vedette

Présentation RVER Chambre de commerce Lévis - 1er octobre 2014
Présentation RVER Chambre de commerce Lévis - 1er octobre 2014Présentation RVER Chambre de commerce Lévis - 1er octobre 2014
Présentation RVER Chambre de commerce Lévis - 1er octobre 2014Chambre de commerce de Lévis
 
2011 03-04 powerpointapc
2011 03-04 powerpointapc2011 03-04 powerpointapc
2011 03-04 powerpointapcRicardo
 
Georges Djohy: Dynamiques sociopolitiques d’adaptation des éleveurs transhuma...
Georges Djohy: Dynamiques sociopolitiques d’adaptation des éleveurs transhuma...Georges Djohy: Dynamiques sociopolitiques d’adaptation des éleveurs transhuma...
Georges Djohy: Dynamiques sociopolitiques d’adaptation des éleveurs transhuma...AfricaAdapt
 
Enquête sur la jeunesse à Malakoff
Enquête sur la jeunesse à MalakoffEnquête sur la jeunesse à Malakoff
Enquête sur la jeunesse à MalakoffGérard Marquié
 
Presentacion posesivos
Presentacion posesivosPresentacion posesivos
Presentacion posesivosMaripi123
 
Selección por encargo y convenio marco abril 2011
Selección por encargo y convenio marco abril 2011Selección por encargo y convenio marco abril 2011
Selección por encargo y convenio marco abril 2011gabogadosv
 
Partit de futbol 2011
Partit de futbol 2011Partit de futbol 2011
Partit de futbol 2011Natzaret
 
Komlam Mawuena Adjoyi: Messagers du changement climatique, c’est aussi et sur...
Komlam Mawuena Adjoyi: Messagers du changement climatique, c’est aussi et sur...Komlam Mawuena Adjoyi: Messagers du changement climatique, c’est aussi et sur...
Komlam Mawuena Adjoyi: Messagers du changement climatique, c’est aussi et sur...AfricaAdapt
 
Dîner-conférence du 11 décembre 2012 - Michel Douville, directeur général, Ce...
Dîner-conférence du 11 décembre 2012 - Michel Douville, directeur général, Ce...Dîner-conférence du 11 décembre 2012 - Michel Douville, directeur général, Ce...
Dîner-conférence du 11 décembre 2012 - Michel Douville, directeur général, Ce...Chambre de commerce de Lévis
 
Presentación evaluacion institucional
Presentación evaluacion institucionalPresentación evaluacion institucional
Presentación evaluacion institucionalanapalacio
 
Practiques fisica 2n batx gener 2011
Practiques fisica 2n batx gener 2011Practiques fisica 2n batx gener 2011
Practiques fisica 2n batx gener 2011Natzaret
 
Poltique monétaire (prise de notes)
Poltique monétaire (prise de notes)Poltique monétaire (prise de notes)
Poltique monétaire (prise de notes)Taha Can
 
2011 01-01 powerpointapc
2011 01-01 powerpointapc2011 01-01 powerpointapc
2011 01-01 powerpointapcRicardo
 

En vedette (20)

Présentation RVER Chambre de commerce Lévis - 1er octobre 2014
Présentation RVER Chambre de commerce Lévis - 1er octobre 2014Présentation RVER Chambre de commerce Lévis - 1er octobre 2014
Présentation RVER Chambre de commerce Lévis - 1er octobre 2014
 
2011 03-04 powerpointapc
2011 03-04 powerpointapc2011 03-04 powerpointapc
2011 03-04 powerpointapc
 
Georges Djohy: Dynamiques sociopolitiques d’adaptation des éleveurs transhuma...
Georges Djohy: Dynamiques sociopolitiques d’adaptation des éleveurs transhuma...Georges Djohy: Dynamiques sociopolitiques d’adaptation des éleveurs transhuma...
Georges Djohy: Dynamiques sociopolitiques d’adaptation des éleveurs transhuma...
 
Dîner conférence du 23 janvier 2013
Dîner conférence du 23 janvier 2013Dîner conférence du 23 janvier 2013
Dîner conférence du 23 janvier 2013
 
Le paysage de la recherche en France, par Daniel Steinmetz
Le paysage de la recherche en France, par Daniel SteinmetzLe paysage de la recherche en France, par Daniel Steinmetz
Le paysage de la recherche en France, par Daniel Steinmetz
 
Enquête sur la jeunesse à Malakoff
Enquête sur la jeunesse à MalakoffEnquête sur la jeunesse à Malakoff
Enquête sur la jeunesse à Malakoff
 
El despertar del Magreb
El despertar del MagrebEl despertar del Magreb
El despertar del Magreb
 
Presentacion posesivos
Presentacion posesivosPresentacion posesivos
Presentacion posesivos
 
Selección por encargo y convenio marco abril 2011
Selección por encargo y convenio marco abril 2011Selección por encargo y convenio marco abril 2011
Selección por encargo y convenio marco abril 2011
 
Partit de futbol 2011
Partit de futbol 2011Partit de futbol 2011
Partit de futbol 2011
 
Komlam Mawuena Adjoyi: Messagers du changement climatique, c’est aussi et sur...
Komlam Mawuena Adjoyi: Messagers du changement climatique, c’est aussi et sur...Komlam Mawuena Adjoyi: Messagers du changement climatique, c’est aussi et sur...
Komlam Mawuena Adjoyi: Messagers du changement climatique, c’est aussi et sur...
 
Summit resolution
Summit resolutionSummit resolution
Summit resolution
 
Dîner-conférence du 11 décembre 2012 - Michel Douville, directeur général, Ce...
Dîner-conférence du 11 décembre 2012 - Michel Douville, directeur général, Ce...Dîner-conférence du 11 décembre 2012 - Michel Douville, directeur général, Ce...
Dîner-conférence du 11 décembre 2012 - Michel Douville, directeur général, Ce...
 
Presentación evaluacion institucional
Presentación evaluacion institucionalPresentación evaluacion institucional
Presentación evaluacion institucional
 
Practiques fisica 2n batx gener 2011
Practiques fisica 2n batx gener 2011Practiques fisica 2n batx gener 2011
Practiques fisica 2n batx gener 2011
 
Sin título 1
Sin título 1Sin título 1
Sin título 1
 
El profeta de Gibran Jalil Gibran
El profeta de Gibran Jalil GibranEl profeta de Gibran Jalil Gibran
El profeta de Gibran Jalil Gibran
 
Poltique monétaire (prise de notes)
Poltique monétaire (prise de notes)Poltique monétaire (prise de notes)
Poltique monétaire (prise de notes)
 
Web 2.0 per a entidades deportivas
Web 2.0 per a entidades deportivasWeb 2.0 per a entidades deportivas
Web 2.0 per a entidades deportivas
 
2011 01-01 powerpointapc
2011 01-01 powerpointapc2011 01-01 powerpointapc
2011 01-01 powerpointapc
 

Similaire à Mac app store redux

Marcboivin wordpresspourledveloppementdapplicationsweb-110328123533-phpapp02
Marcboivin wordpresspourledveloppementdapplicationsweb-110328123533-phpapp02Marcboivin wordpresspourledveloppementdapplicationsweb-110328123533-phpapp02
Marcboivin wordpresspourledveloppementdapplicationsweb-110328123533-phpapp02ma14
 
WordPress pour le développement d'aplications web
WordPress pour le développement d'aplications webWordPress pour le développement d'aplications web
WordPress pour le développement d'aplications webConFoo
 
AlterWay SolutionsLinux Outils Industrialisation PHP
AlterWay SolutionsLinux Outils Industrialisation PHPAlterWay SolutionsLinux Outils Industrialisation PHP
AlterWay SolutionsLinux Outils Industrialisation PHPjulien pauli
 
Hermes, génération et déploiement d'ipa by Peter Meuel
Hermes, génération et déploiement d'ipa by Peter MeuelHermes, génération et déploiement d'ipa by Peter Meuel
Hermes, génération et déploiement d'ipa by Peter MeuelCocoaHeads France
 
CocoaHeads Rennes #4 : Tests automatisés sur iOS
CocoaHeads Rennes #4 : Tests automatisés sur iOSCocoaHeads Rennes #4 : Tests automatisés sur iOS
CocoaHeads Rennes #4 : Tests automatisés sur iOSCocoaHeadsRNS
 
Université de Montréal_Présentation de l’interface mobile du logiciel Primo_ ...
Université de Montréal_Présentation de l’interface mobile du logiciel Primo_ ...Université de Montréal_Présentation de l’interface mobile du logiciel Primo_ ...
Université de Montréal_Présentation de l’interface mobile du logiciel Primo_ ...nst2011
 
201305 isd microsoft_présentation_windows8
201305 isd microsoft_présentation_windows8201305 isd microsoft_présentation_windows8
201305 isd microsoft_présentation_windows8Inforsud Diffusion
 
Petit dejeuner-evolix-150410
Petit dejeuner-evolix-150410Petit dejeuner-evolix-150410
Petit dejeuner-evolix-150410evolix
 
Inversion of control with nuun
Inversion of control with nuunInversion of control with nuun
Inversion of control with nuunÉpo Jemba
 
Réunion technique PMSIpilot - Mars 2010
Réunion technique PMSIpilot - Mars 2010Réunion technique PMSIpilot - Mars 2010
Réunion technique PMSIpilot - Mars 2010PMSIpilot
 
Java EE, un ami qui vous veut du bien
Java EE, un ami qui vous veut du bienJava EE, un ami qui vous veut du bien
Java EE, un ami qui vous veut du bienAntoine Sabot-Durand
 
Petit DéJeuner Industrialisation 13 10 2011 Eurosites
Petit DéJeuner Industrialisation 13 10 2011 EurositesPetit DéJeuner Industrialisation 13 10 2011 Eurosites
Petit DéJeuner Industrialisation 13 10 2011 EurositesHervé Leclerc
 
Rails on business - RailsCampParis3
Rails on business - RailsCampParis3Rails on business - RailsCampParis3
Rails on business - RailsCampParis3Vodeclic SAS
 
Développer et déployer une application php maintenable
Développer et déployer une application php maintenableDévelopper et déployer une application php maintenable
Développer et déployer une application php maintenableLeTesteur
 
What's Next Replay - Flex Mobile
What's Next Replay - Flex MobileWhat's Next Replay - Flex Mobile
What's Next Replay - Flex MobileZenikaOuest
 
Tirer parti des périphériques mobiles dans une application web : qui a dit qu...
Tirer parti des périphériques mobiles dans une application web : qui a dit qu...Tirer parti des périphériques mobiles dans une application web : qui a dit qu...
Tirer parti des périphériques mobiles dans une application web : qui a dit qu...Christophe Porteneuve
 

Similaire à Mac app store redux (20)

Marcboivin wordpresspourledveloppementdapplicationsweb-110328123533-phpapp02
Marcboivin wordpresspourledveloppementdapplicationsweb-110328123533-phpapp02Marcboivin wordpresspourledveloppementdapplicationsweb-110328123533-phpapp02
Marcboivin wordpresspourledveloppementdapplicationsweb-110328123533-phpapp02
 
WordPress pour le développement d'aplications web
WordPress pour le développement d'aplications webWordPress pour le développement d'aplications web
WordPress pour le développement d'aplications web
 
Usine logicielle ios
Usine logicielle iosUsine logicielle ios
Usine logicielle ios
 
AlterWay SolutionsLinux Outils Industrialisation PHP
AlterWay SolutionsLinux Outils Industrialisation PHPAlterWay SolutionsLinux Outils Industrialisation PHP
AlterWay SolutionsLinux Outils Industrialisation PHP
 
FinistJUG - Apache TomEE
FinistJUG - Apache TomEEFinistJUG - Apache TomEE
FinistJUG - Apache TomEE
 
Hermes, génération et déploiement d'ipa by Peter Meuel
Hermes, génération et déploiement d'ipa by Peter MeuelHermes, génération et déploiement d'ipa by Peter Meuel
Hermes, génération et déploiement d'ipa by Peter Meuel
 
ASFWS 2011 - MiniMySqlat0r Reloaded
ASFWS 2011 - MiniMySqlat0r ReloadedASFWS 2011 - MiniMySqlat0r Reloaded
ASFWS 2011 - MiniMySqlat0r Reloaded
 
CocoaHeads Rennes #4 : Tests automatisés sur iOS
CocoaHeads Rennes #4 : Tests automatisés sur iOSCocoaHeads Rennes #4 : Tests automatisés sur iOS
CocoaHeads Rennes #4 : Tests automatisés sur iOS
 
Université de Montréal_Présentation de l’interface mobile du logiciel Primo_ ...
Université de Montréal_Présentation de l’interface mobile du logiciel Primo_ ...Université de Montréal_Présentation de l’interface mobile du logiciel Primo_ ...
Université de Montréal_Présentation de l’interface mobile du logiciel Primo_ ...
 
201305 isd microsoft_présentation_windows8
201305 isd microsoft_présentation_windows8201305 isd microsoft_présentation_windows8
201305 isd microsoft_présentation_windows8
 
Petit dejeuner-evolix-150410
Petit dejeuner-evolix-150410Petit dejeuner-evolix-150410
Petit dejeuner-evolix-150410
 
Inversion of control with nuun
Inversion of control with nuunInversion of control with nuun
Inversion of control with nuun
 
Réunion technique PMSIpilot - Mars 2010
Réunion technique PMSIpilot - Mars 2010Réunion technique PMSIpilot - Mars 2010
Réunion technique PMSIpilot - Mars 2010
 
Java EE, un ami qui vous veut du bien
Java EE, un ami qui vous veut du bienJava EE, un ami qui vous veut du bien
Java EE, un ami qui vous veut du bien
 
Petit DéJeuner Industrialisation 13 10 2011 Eurosites
Petit DéJeuner Industrialisation 13 10 2011 EurositesPetit DéJeuner Industrialisation 13 10 2011 Eurosites
Petit DéJeuner Industrialisation 13 10 2011 Eurosites
 
Rails on business - RailsCampParis3
Rails on business - RailsCampParis3Rails on business - RailsCampParis3
Rails on business - RailsCampParis3
 
Splunk
SplunkSplunk
Splunk
 
Développer et déployer une application php maintenable
Développer et déployer une application php maintenableDévelopper et déployer une application php maintenable
Développer et déployer une application php maintenable
 
What's Next Replay - Flex Mobile
What's Next Replay - Flex MobileWhat's Next Replay - Flex Mobile
What's Next Replay - Flex Mobile
 
Tirer parti des périphériques mobiles dans une application web : qui a dit qu...
Tirer parti des périphériques mobiles dans une application web : qui a dit qu...Tirer parti des périphériques mobiles dans une application web : qui a dit qu...
Tirer parti des périphériques mobiles dans une application web : qui a dit qu...
 

Plus de CocoaHeads.fr

Présentation gnireenigne
Présentation   gnireenignePrésentation   gnireenigne
Présentation gnireenigneCocoaHeads.fr
 
Wireless ad hoc distribution
Wireless ad hoc distributionWireless ad hoc distribution
Wireless ad hoc distributionCocoaHeads.fr
 
Déploiement ad hoc et beta test
Déploiement ad hoc et beta testDéploiement ad hoc et beta test
Déploiement ad hoc et beta testCocoaHeads.fr
 
Automatisation shipping process
Automatisation shipping processAutomatisation shipping process
Automatisation shipping processCocoaHeads.fr
 
Slides de la Localisation
Slides de la LocalisationSlides de la Localisation
Slides de la LocalisationCocoaHeads.fr
 
Presentation de Mars
Presentation de MarsPresentation de Mars
Presentation de MarsCocoaHeads.fr
 
Presentation de Mars
Presentation de MarsPresentation de Mars
Presentation de MarsCocoaHeads.fr
 
Presentation de Mars
Presentation de MarsPresentation de Mars
Presentation de MarsCocoaHeads.fr
 

Plus de CocoaHeads.fr (14)

Hello xcode 4 v2
Hello xcode 4 v2Hello xcode 4 v2
Hello xcode 4 v2
 
Présentation gnireenigne
Présentation   gnireenignePrésentation   gnireenigne
Présentation gnireenigne
 
Organic quality
Organic qualityOrganic quality
Organic quality
 
Wireless ad hoc distribution
Wireless ad hoc distributionWireless ad hoc distribution
Wireless ad hoc distribution
 
Déploiement ad hoc et beta test
Déploiement ad hoc et beta testDéploiement ad hoc et beta test
Déploiement ad hoc et beta test
 
Automatisation shipping process
Automatisation shipping processAutomatisation shipping process
Automatisation shipping process
 
Bitmaps
BitmapsBitmaps
Bitmaps
 
Slides de la
Slides de la Slides de la
Slides de la
 
Slides de la Localisation
Slides de la LocalisationSlides de la Localisation
Slides de la Localisation
 
Design patterns
Design patternsDesign patterns
Design patterns
 
Design patterns
Design patternsDesign patterns
Design patterns
 
Presentation de Mars
Presentation de MarsPresentation de Mars
Presentation de Mars
 
Presentation de Mars
Presentation de MarsPresentation de Mars
Presentation de Mars
 
Presentation de Mars
Presentation de MarsPresentation de Mars
Presentation de Mars
 

Mac app store redux

  • 1. Mac App Store Présentation par Renaud Pradenc céroce vendredi 11 février 2011
  • 2. Présentation du Mac App Store vendredi 11 février 2011
  • 4. Même expérience que sur le store iOS • Achat immédiat • Copie automatique dans le dossier Applications • Mettre l’application à la corbeille efface aussi ses données vendredi 11 février 2011
  • 5. Parlons argent • Commission d’Apple: 30% • Remboursement: vous pouvez avoir à rembourser 100% (y compris la com) • Paiement dans les 45 jours si ≥ 150$ vendredi 11 février 2011
  • 6. Politique de publication • Pas de porno, d’attaques personnelles, de racisme, de diffamation. • Pas de versions de démo ou béta (pas non plus le droit de mentionner l'existence d’une démo). • L’appli doit présenter un intérêt • Pas de référence à une autre plateforme logicielle vendredi 11 février 2011
  • 7. Exigences techniques • Ne doit pas reposer sur des installations optionnelles (Java, Rosetta, etc.) • Ne pas utiliser d’API privées • Doit être contenue dans un seul bundle, et ne pas copier de données ailleurs • Pas de kext vendredi 11 février 2011
  • 8. Interface Homme- Machine • Respecter les Apple Human Interface Guidelines • Si l’IHM est mauvaise, l’appli pourrait être rejetée vendredi 11 février 2011
  • 9. Pas de vieux restes… • Pas d’installateur • Pas de protection anti-pirate perso • Pas de système de clé, débridage, etc. • Pas de système de màj perso vendredi 11 février 2011
  • 10. Dans les détails • Pas de code PowerPC • Info de debug au format DWARF with dSYM • Clé dans Info.plist LSApplicationCategoryType vendredi 11 février 2011
  • 11. Fichiers • L’appli n’a le droit d’écrire que dans les répertoires: ~/Library/Application Support/<app-identifier> ~/Library/<app-identifier> ~/Library/Caches/<app-identifier> ~/Pictures/<app-identifier> ~/Music/<app-identifier> ~/Movies/<app-identifier> • On peut toutefois utiliser des fichiers temporaires ou les API NSUserDefaults, Carnet d’adresse, etc. vendredi 11 février 2011
  • 12. Adapter une application existante vendredi 11 février 2011
  • 13. Pas d’API privées, on a dit ! • BWToolkit utilise des API privées de NSTokenAttachmentCell. vendredi 11 février 2011
  • 14. Retirer le code PowerPC vendredi 11 février 2011
  • 15. Utiliser les macros conditionnelles #ifdef MAC_APP_STORE // Code spécifique au MAS #else // Code pour la version normale #endif vendredi 11 février 2011
  • 16. Info.plist conditionnel #ifdef MAC_APP_STORE <key>LSMinimumSystemVersion</key> <string>10.6.6</string> <key>LSApplicationCategoryType</key> <string>public.app-category.photography</ string> #else <key>LSMinimumSystemVersion</key> <string>10.5.0</string> <key>SUEnableAutomaticChecks</key> <true/> <key>SUPublicDSAKeyFile</key> <string>dsa_pub.pem</string> <key>SUFeedURL</key> <string>http://ceroce.com/portraimatic/ appcast.xml</string> #endif vendredi 11 février 2011
  • 17. Pourquoi créer une nouvelle cible ? • Retirer des fichiers est trop difficile avec les configurations de build • À retirer: Sparkle, code/ressources liées au bridage. • Il peut être nécessaire d’avoir des xib en deux versions (ex. Préférences) vendredi 11 février 2011
  • 18. Créer une nouvelle cible • Dupliquez la cible existante • Bug de Xcode 3.2.5: Les chemins des Frameworks contiennent des guillemets en trop. • Retirer le deuxième Info.plist vendredi 11 février 2011
  • 19. Vérification du reçu d’achat vendredi 11 février 2011
  • 20. Étapes de la validation • Vérifier la présence du reçu • Vérifier sa signature • Vérifier le Bundle Identifier et la version • Vérifier le GUID vendredi 11 février 2011
  • 21. Le reçu .../MonAppli.app/Contents/_MASReceipt/receipt Le reçu contient: • Le Bundle Identifier • La version de l’appli • Un hâchage de GUID+une valeur opaque+Bundle Identifier Apple fournit le format du reçu, et la manière de récupérer le GUID. Pour le reste, il faut se débrouiller tout seul. vendredi 11 février 2011
  • 22. N’installez pas asn1c • Le code produit par asn1c a été intégré dans le projet de Quatermain https://github.com/AlanQuatermain/mac-app-store- validation-sample • Le code produit est dégueu. • OpenSSL peut décoder du ASN1 vendredi 11 février 2011
  • 23. Roddi, ton nouvel ami • Roddi a codé une validation complète: https://github.com/roddi/ValidateStoreReceipt • Ne prenez pas le code tel quel. • Obscurcissez le Bundle Identifier et la version. vendredi 11 février 2011
  • 25. Installation des certificats • Copiez les 2 certifs de Système à Session (sinon, Xcode ne les voit pas) vendredi 11 février 2011
  • 26. Signer l’application C’est écrit en tout petit dans la doc, mais il faut la signer. vendredi 11 février 2011
  • 27. Valider & soumettre • Bug de Xcode 3.2.5: dans Validate… et Submit…, sélectionnez «Don’t Code Sign» puis le certificat «3rd Party Mac Installer» vendredi 11 février 2011
  • 28. Questions ? Parlez maintenant ou taisez-vous à jamais. vendredi 11 février 2011
  • 29. Références Mes articles http://www.renaudpradenc.com/?post/Adapter-son-appli-au-Mac-App-Store http://www.renaudpradenc.com/?post/Mac-App-Store%3A-vérifier-le-reçu http://www.renaudpradenc.com/?post/Mac-App-Store%3A-soumettre-l-application Le projet de Roddi https://github.com/roddi/ValidateStoreReceipt Le projet d’Alan Quatermain https://github.com/AlanQuatermain/mac-app-store-validation-sample Les règles du magasin http://developer.apple.com/appstore/mac/resources/approval/guidelines.html Les exigences techniques http://developer.apple.com/devcenter/mac/documents/submitting.html Validation des reçus céroce http://developer.apple.com/devcenter/mac/documents/validating.html vendredi 11 février 2011