Monthly Archives: October 2012

Certifying trial apps for the Windows Store

Some of the applications submitted to the Windows Store are rejected during certification because of the following requirement:

1.2 Your app must be fully functional when the customer gets it from the Windows Store

The Windows Store offers only fully functional apps to provide customers with the best experience. Anything that might cause our testers to think that your app is not completely finished will cause your app to fail certification.

You can help us by testing your app thoroughly before you submit it, and by providing us the information we need to test your app thoroughly. For example, if your app requires login credentials, provide us with a demo account. If your app requires access to a server, tell us what we need to do to verify that it’s working correctly.

According to community experience, it seems that you should provide test credentials even if you are quite sure, that the testers also have them. For example if your app connects to Facebook or Twitter, you better create a test account and share its credentials with the testers.

The question is more interesting for apps, that provide full functionality only after purchasing the app. So by default a trial version is installed, and the testers can access all features only after paying for the app. What should you do in this case?

Don’t rejoice in advance, Microsoft won’t pay for you just to test your app Mosolygó arc  The solution is easy for apps that use the Windows Store commerce system: just replace the CurrentAppSimulator class you used for testing to the CurrentApp class, and you are done – testers will be able to bypass the payment and test your app. But if you are using any other payment system, you need to provide credentials or credit card info to test the purchase and the full functionality of your app. You should enter these details into the Instructions to testers field in the Notes to testers step of the submission form.

Unfortunately there are forum posts about apps, that although are using the Store commerce system, got rejected because of requirement 1.2. In theory this should not happen…

In the forums, people have suggested to build a voucher mechanism into your app as a workaround: so the user can enter a voucher code you provide in your app (for example in the About pane) and she will get the full functionality without the need of a credit card. In this case you can share the voucher code (or a time limited version of it) with the testers, and you can also use this feature to promote your app by giving full versions to reviewers, bloggers etc.

Do you have a better idea?

 

Technorati-címkék: ,

Your app needs a privacy policy in the Windows Store

If you would like to publish your Windows 8 application to the Windows Store, you better provide a proper privacy statement, because many apps are getting rejected because of missing or inadequate privacy policy.

This is the referred requirement:

4.1.1 Your app must have a privacy statement if it collects personal information

Why?

So how the testers know, that your app works with sensitive data? Of course from the manifest file you provide! Practically if you have anything checked on the Capabilities page, they have the reason to believe that your app accesses private data (even if your app actually doesn’t, but could). And here is the pitfall: the default project skeletons that Visual Studio 2012 generates by default have the Internet (Client) capability checked:

default-capabilities

Well, this seems reasonable, because most application today want to connect to remote services, but in this case the IP address of the client – which is definitely sensitive data –  is sent to the service. So if your app doesn’t connect to the network, you better turn off this capability to save you some certification time. On the other hand, if your app does nothing else, but downloads data from the Internet, you definitely need a privacy policy.

Personal information includes:

  • IP numbers
  • Webcam snaps
  • Audio/video recordings
  • Name, address, DOB and other PII
  • Photos
  • Contacts
  • Documents

What?

In general, an acceptable privacy policy is one that:

  • Informs users of the personal information collected by your app
  • Informs users how that information is used, stored, secured, and disclosed
  • Describes the controls that users have over the use and sharing of their information
  • Describes how users can access their information
  • Complies with applicable laws and regulations

The recommended practice is that if your app doesn’t actually collect or store personal information, say so in your privacy policy. One more reason to provide a policy.

If your app connects to a 3rd party service, don’t forget to include or link to the policy of the service.

Samples and sources

Beyond these general guidelines, Microsoft doesn’t provide samples or templates, because it’s definitely your task to create a custom policy for your application. Not the ideal task for a developer, so let’s see some samples.

The good news is that there are several free privacy policy generators available online. I found that many of them requires you to register at the end of a really long wizard, if you want to see the generated policy, so be careful.

My personal favorite is the Privacy Choice Policy Maker recommended by Association for Competitive Technology (ACT). In this tool you first have to complete a 6-step form to generate a badge like this:

policy-kids-badge

Although this badge is not suitable for the Windows Store, I like the idea. Just click on the I need a privacy policy link to get to the 12-step wizard, where you will be provided with tons of options and detailed descriptions.

If you need a short statement, you can be inspired by Robert MacLean’s privacy statement:

This application does not collect or transmit any user’s personal information, with the exception of technical information included in HTTP requests (such as your IP address). No personal information is used, stored, secured or disclosed by services this application works with. If you would like to report any violations of this policy, please contact us using the contact form.

Actually Robert has a bit longer version as well and his blog is also worth to read: http://www.sadev.co.za/app-privacy

Where?

The final question is where to publish the privacy statement? When you submit your app to the Store, you will find a Privacy policy field on the form in the Description step:

appreg-policy

Although the tip says you can enter up to 2048 characters, the tooltip of the help icon makes it clear, that you have to enter a URL here. Yes, even if it seems nonsense, your app needs a valid webpage where you publish your privacy policy. Well, there are examples of accepted URLs that point to Word documents published on SkyDrive… Note, that the form allows you to leave this field empty, but your app will be rejected later, so you better fill this field.

Within your app the best place for your privacy policy is the Settings charm:

policy-settings-charm-usa-today

Of course you can add a hyperlink here that points to your online statement.

And finally, you can give a hint to the testers in the Instructions for testers field of the Notes to testers step about where they can find your privacy statement.

 

So these are the experiences and public information so far. If you have any more ideas, tips and experiences, please don’t hesitate to share it, so we all can publish our apps seamlessly in the Store. Thank you.

 

Technorati-címkék: ,,

WinJS Tricks Series: Creating message boxes

Maybe you already heard, that you can create classic “rich client” applications in JavaScript for Windows 8. Whether it’s practical to choose JavaScript instead of C#, that’s another question, but it’s a fact, that there are problems which can be solved easier in JavaScript.

It’s a fact too, that in the beginning you won’t be productive when you create your Metro style applications in JavaScript, because the WinJS documentation is quite minimal. So I decided to start the WinJS Tricks Series to show you the solutions for problems that sooner or later you will face with when you are coding on WinJS. When you see the solution, it’s quite straightforward and logical, but without it, well….

So let’s take the simple task of popping up message boxes in WinJS! To save you some time, I tell you, that the classic alert doesn’t work. And there is no MessageBox class in WinJS. So what?

Let me introduce you to the world of message dialogs:

720p, full screen view recommended

If you are interested, please Like, so I will know. Thanks!

 

Technorati-címkék: ,,,,

tfspreview.com

The Team Foundation Server has a cloud-based (of course it runs on Azure), subscription-based version, called Team Foundation Service. Because this service is currently in preview, you can register for free on http://tfspreview.com. For this price you got not only a source control, but all the nice features of TFS.

tfspreview

I use this service since the first internal preview release, and I really like it. It takes no time to start my browser and create a brand new team project, and in 1 minute it’s ready and you can connect to it. I use it even for 1-person projects, because I believe in this online service more than an SVN installed onto my own computer. So I think the message below is quite correct. Mosolygó arc

love this

 

Network Error 0x2efd

Yesterday I was trying to make a downloaded Windows Store demo app written in JavaScript work, but I was constantly hitting the following error message:

XMLHttpRequest: Network Error 0x2efd, Could not complete the operation due to error 00002efd.

This is quite a low-level error from WinHTTP, actually this is the generic error for network connectivity issues: ERROR_INTERNET_CANNOT_CONNECT (12029).

The application is using the Bing Maps SDK, so it definitely tries to connect to the network, therefore the Internet (Client) capability was checked in the package.appxmanifest file. Other Bing Maps apps were working properly, so the issue was probably not on server side.

After some experimenting I found, that the app works, if I enable the Private Networks (Client & Server) capability as well. It’s quite strange, because the privateNetworkClientServer capability means, that according to the docsA home or work network – the app can send information to or from your computer and other computers on the same network.”, but it was not the case.

This morning I restarted the computer, and now the app works perfectly with only the internetClient capability. Strange.

 

Technorati-címkék: ,,

Tomorrow: Developing Windows 8 Apps with HTML, CSS & JavaScript Jump Start

jump-start-logoJump starts are accelerated, demo-rich online trainings, without hands-on labs. The Developing Windows 8 Apps with HTML, CSS & JavaScript Jump Start is a two-day course available on October 10-11 9:00 am-4:00 pm PDT, and lead by Jeremy Foster and Michael Palermo. The first day focuses on HTML, CSS and JavaScripts and prepares you for the exam 70-480. On the second day you can learn how you can use these technologies to create a Windows 8 application, and by the way helps you to prepare for exam 70-481.

The registration is free but not absolutely anonymous. You can fill in your profile and you can share your details with other members on your site. This event is not a simple webcast, it’s going to a be a real online virtual classroom experience!

You can find more info on the following page: ttp://msl-events.cloudapp.net/EventRegistration.aspx?eid=e3941d57-3299-4d9f-b5c5-e94a9a170654

Add me as your friend on the site, if you read this and joined the training!

 

Technorati-címkék: ,

Creating an asp:Localize snippet for Visual Studio

In one of our projects we currently working on localization, in which we migrate the static texts from ASPX pages to resx files. We use asp:Localize controls to display the texts from the resource files. The Localize is essentially a Literal control, it derives from Literal without adding any new functionality to it, beside the fact that its name makes its usage more obvious in the markup.

Creating Localize controls are quite tedious, therefore after a while I created a code snippet, so now I can quickly insert the tag with TAB-TAB, and all I have to type is the name of the resource key. Here is the code, just paste it into .snippet file and then copy the file to the C:\Program Files (x86)\Microsoft Visual Studio 10.0\Web\Snippets\HTML\1033\ASP.NET folder, Visual Studio will recognize it:

<CodeSnippet Format="1.1.0" 
             xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
  <Header>
    <Title>localize</Title>
    <Author>Balássy György</Author>
    <Shortcut>localize</Shortcut>
    <AlternativeShortcuts>
      <Shortcut Value="localize">asp:localize</Shortcut>
    </AlternativeShortcuts>
    <Description>
      Markup snippet for a control that contains localized text
    </Description>
    <SnippetTypes>
      <SnippetType>Expansion</SnippetType>
    </SnippetTypes>
    <FileExtensions>
      aspx;master;ascx
    </FileExtensions>
  </Header>
  <Snippet>
    <Declarations>
      <Literal>
        <ID>key</ID>
        <ToolTip>key</ToolTip>
        <Default>key</Default>
      </Literal>
    </Declarations>
    <Code Language="html">
      <![CDATA[<asp:localize runat="server" meta:resourcekey="$key$" />$end$]]>
    </Code>
  </Snippet>
</CodeSnippet>

Creating a snippet like this takes only 5 minutes, but makes your life much easier.

 

Technorati-címkék: ,