320 likes | 430 Views
Marketplace Deployment. Charles Petzold www.charlespetzold.com. Agenda. The Windows Phone Marketplace Preparing for deployment Trial versions Application manifest and capabilities Certification requirements Artwork and iconography Submitting your app for certification Deploying updates.
E N D
Marketplace Deployment Charles Petzold www.charlespetzold.com
Agenda • The Windows Phone Marketplace • Preparing for deployment • Trial versions • Application manifest and capabilities • Certification requirements • Artwork and iconography • Submitting your app for certification • Deploying updates
The Windows Phone Marketplace • The only way to distribute apps to users • http://marketplace.windowsphone.com/Default.aspx • Developer account required to publish apps • 100 free apps and unlimited paid apps per year
Preparing for Deployment • Test and debug the application • Optionally include support for trial versions • Test with manifest modified to list capabilities • Use Capability Detection tool to detect capabilities • Make sure app meets certification requirements • Prepare the application artwork • Artwork submitted to Marketplace • Iconography in app itself
Trial Versions • Windows phone apps have the option of supporting trial versions ("try before you buy") • http://msdn.microsoft.com/en-us/library/ff967554(VS.92).aspx • LicenseInformation.IsTrial method tells you whether app is running as a trial version • Might offer reduced functionality, or • Might expire after a specified period of time • MarketplaceDetailTask.Show method takes user to your app in the Marketplace for purchase
Detecting Trial Versions LicenseInformation license = new LicenseInformation() if (license.IsTrial()) { // Trial version } else { // Licensed version }
Implementing "Buy Now" private MarketplaceDetailTask _task = new MarketplaceDetailTask(); . . . LicenseInformation license = new LicenseInformation() if (license.IsTrial() && IsExpired) { // If trial period has expired, let the user buy the app _task.Show(); }
Application Manifest • WMAppManifest.xml • Generated by Visual Studio • Embedded in application's XAP file • Contains information about the app, including: • Capabilities (features and services it uses) • Title, description, version, unique ID, and more • Test with modified <Capabilities> section • Microsoft modifies this section after submission • http://msdn.microsoft.com/en-us/library/ff769509(VS.92).aspx
WMAppManifest.xml <?xml version="1.0" encoding="utf-8"?> <Deployment ... AppPlatformVersion="7.0"> <App xmlns="" ProductID="{430ae360-8d52-40b3-a92f-93854c239a86}" Title="RssNewsDemo" RuntimeType="Silverlight" Version="1.0.0.0" Genre="apps.normal" Author="RssNewsDemoauthor" Description="Sample description" Publisher="RssNewsDemo"> <IconPath...>ApplicationIcon.png</IconPath> <Capabilities> ... </Capabilities> <Tasks> <DefaultTask Name ="_default" NavigationPage="MainPage.xaml"/> </Tasks> <Tokens> <PrimaryTokenTokenID="RssNewsDemoToken" TaskName="_default"> <TemplateType5> <BackgroundImageURI...>Background.png</BackgroundImageURI> <Count>0</Count> <Title>RssNewsDemo</Title> </TemplateType5> </PrimaryToken> </Tokens> </App> </Deployment>
Application Capabilities <Capabilities> <Capability Name="ID_CAP_GAMERSERVICES"/> <Capability Name="ID_CAP_IDENTITY_DEVICE"/> <Capability Name="ID_CAP_IDENTITY_USER"/> <Capability Name="ID_CAP_LOCATION"/> <Capability Name="ID_CAP_MEDIALIB"/> <Capability Name="ID_CAP_MICROPHONE"/> <Capability Name="ID_CAP_NETWORKING"/> <Capability Name="ID_CAP_PHONEDIALER"/> <Capability Name="ID_CAP_PUSH_NOTIFICATION"/> <Capability Name="ID_CAP_SENSORS"/> <Capability Name="ID_CAP_WEBBROWSERCOMPONENT"/> </Capabilities>
Capability Detection Tool • Command-line tool included in updates to Windows Phone Developer Tools • %Program Files%\Microsoft SDKs\Windows Phone\v7.0\Tools\CapDetect\CapabilityDetection.exe • Examines IL in generated assemblies and/or XAP file and determines application capabilities • Networking, location service, sensors, etc. • Outputs ID_CAPS enumerating capabilities • Run tool and copy ID_CAPs to <Capabilities> section of WMAppManifest.xml for testing
Using the Capability Detection Tool • Run CapabilityDetection.exe • Point it to phone project's bin folder
Certification Requirements • Download PDF from http://go.microsoft.com/?linkid=9730558 • Study it; learn it; know it • Apps that don't meet requirements are routinely rejected • Read between the lines
Reliability (Section 5.1) • Must run on any WP7 device of any screen size • Must handle exceptions, not terminate unexpectedly, and present user-friendly error messages • "An application that displays generic or unhelpful error messages will fail certification" • Display a visual progress indicator and a means to cancel during "time-consuming activities" such as "downloading data over network connections"
Performance (Section 5.2) • Must show first screen within 5 seconds of launch • First real screen, not splash screen • Must be responsive to input within 20 seconds • Must complete actions in response to Activated and Deactivated events within 10 seconds • Keep that tombstoning code tight! • Must not hijack the Back button • Must not invoke trial APIs in a tight loop
Location-Aware Apps (2.10 and 6.1) • Must "provide in-application settings that allow the user to enable and disable your application‟s access to and use of location from the Location Service API " • Must not "hang or terminate unexpectedly when the Location Service is turned off on the phone"
Push Notifications (2.13 and 6.2) • Must "ask the user for explicit permission" on first use of HttpNotificationChannel.BindtoShellToast • First use, not first use each time applications runs • Use isolated storage to persist permission • Must allow users to opt in to push notifications and disable them if desired • All push notifications, but toast notifications especially • Must not "excessively use network capacity or bandwidth"
Running While Locked (Section 6.3) • Must minimize power usage while under lock • App must "stop any UI updates, active timers, and other non-critical processing" • Use Obscured and Unobscured events • Must not reduce battery life to less than 120 hours • Unless app plays audio, in which case battery life must be at least 6 hours
Additional Requirements • Must consist of type-safe MSIL code(5.4) • Code can be obfuscated if desired • Must not P/Invoke, use undocumented APIs, or contain debugging symbols (4.2) • Submit release-build XAPs only! • Must allow users to opt in if app publishes personal data or location data (2.10.5 and 2.11) • Requires published privacy policy, too • XAP size can't exceed 225 MB (4.1.1)
Application Artwork • Required artwork • PC tile – 200 x 200 PNG • Large mobile tile – 173 x 173 PNG • Small mobile tile – 99 x 99 PNG • Screen shots – One to eight 480 x 800 PNGs • Optional artwork • Background art – 1000 x 800 PNG • Shown if app is featured in the Marketplace • Do not use transparent pixels in these images
Sample Tiles and Screens Screen Shot (480 x 800) PC Tile (200 x 200) Large Mobile Tile (173 x 173) Small Mobile Tile (99 x 99)
Iconography • Application icons • Background.png - 173 x 173 tile shown if app is pinned • ApplicationIcon.png - 62 x 62 icon shown in apps list • Icons can optionally use transparent pixels • Allows phone accent color to shine through • Bug in WP7 prevents proper display in apps list • Splash screen • SplashScreenImage.jpg – 480 x 800 image shown while app loads
Sample Iconography Transparent pixels White pixels Background.png ApplicationIcon.png
The Submission Process • Five simple steps that start at: • https://windowsphone.create.msdn.com/-AppSubmission#/Page1Upload • Walk-through and detailed instructions at: • http://create.msdn.com/en-US/home/about/-app_submission_walkthrough_upload • FAQ at: • http://create.msdn.com/en-US/home/faq/-windows_phone_7
Step 1: Upload Application • Provide the app's name and version number • Upload the XAP (release build, max. 225 MB) • Request a "technical exception" if desired
Step 2: Provide Description • Enter title, category, description and other information that will appear in the Marketplace
Step 3: Upload Artwork • Upload large and small mobile tiles, PC tile, and at least one 480 x 800 screen shot • Optionally upload Marketplace background art
Step 4: Set Pricing • Price the application, specify where (in which countries) it will be sold, and indicate whether trial versions are supported
Step 5: Submit • Indicate whether app should be published automatically if it is approved • Click to submit!
Application Updates • Updates work just like first submissions • Submit new version of app as if it were the first • Users are notified that an update is available • You are not allowed to charge for updates • Data in isolated storage is preserved • Unless user uninstalls and reinstalls your app • For more info, see http://msdn.microsoft.com/en-us/library/gg442301(v=vs.92).aspx
Questions? Charles Petzold www.charlespetzold.com