If I had to choose between using the Apple Developer Portal and going to the dentist, I’m going to the dentist. At least I know what pain to expect there. Here are some tips that I wish I had gotten before I had done any iOS development.

Developer vs Enterprise Account
The Enterprise account does not include the benefits of the Developer account, despite costing $200 more. And you need to set up two separate Apple IDs (email accounts) to have both. It’s buried in their program enrollment support page.

Push Notifications
You need two different certificates for this, dev and production, both of which need to be added the to the application in the portal. Then you’ll create a provisioning profile for development, ad-hoc, and app store. Ad-hoc will be used to test push notifications through the production server before the app hits the app store. You can only test push notification on a physical device.

If you use Azure Notification Hubs, never let a device with a development provisioning profile connect to the hub with the production push cert on it. The hub will be eternally ruined at that point, and you’ll have to recreate it. It will not give you any error messages about this, it will instead just stop working for no apparent reason.

Beta Testing
This should be done through TestFlight or another service. The IPA through iTunes method is a crapshoot at best.

iTunes Image Assets
These seem to only be used for the IPA through iTunes beta testing deployment, so don’t even do them.

Apple Developer Portal
It’s not just you, it really is an unusable disaster. Whoever built it should have been a dentist.

After this year’s build, I thought I would take a weekend to upgrade the Windows Phone version of Modern Delicious to 8.1. The new OS version added the ability to add the app to the Share Page option in mobile IE, a feature that it was badly lacking. Without this, the app was badly crippled in comparison to the Windows 8 version. As with anything that still is in a pre-release state, there were a few bumps in the road, so 1 weekend of work turned into 6.

Issues I Found

Share Contracts and JumpListItem Converters in the Emulator

There is a bug in the emulator that will cause it to hang if you add the Share Contract capability to the app and use a JumpListItemBackgroundConverter or JumpListItemForegroundConverter on any page in the app. Those converters are used in the new shared style, universal app phone projects to make Listviews in a Semantic Zoom control behave like the LongListSelector. These are completely unrelated to the share contract bits, so it was two solid weekends just to figure this out. However, these will work together just fine (as they should) on a physical device. It just makes testing kind of a pain, but luckily I do have a device to test on.

MSDN Forum Confirming the Issue

Associating App with the Windows Store Version

Developer portals are the bane of my existence lately. When submitting the new 8.1 version in the Phone developer portal, I went through all of the steps - added a the new appx package, added the description (again), added the submission notes (again), added the images and screenshots (again) and submitted. A button or checkbox to copy all of those things I had to do a second time would have been a big improvement since they were all basically identical to the 8.0 version, but I digress. After submitting, a head-scratching error occurs.

MD_Upload_Error

I had no idea what this was supposed to mean. Package name and language are empty, and the error reads, “The update is missing a package identity association: ”“. At the bottom of the page, there is a big button that says, "Go back and edit,” which of course I clicked. This was wrong, you actually need to click the tiny Edit link to the right of the error, which you can see in the image above.

While I was creating the appx package in Visual Studio, the step where you select the app name lists all of your apps - including Windows. So when I selected Modern Delicious there, it was actually linking the new phone 8.1 version of the app with the Windows 8.1 version of the app. This was good actually, it’s what I wanted in order to hopefully get the universal app icon in the store, it just wasn’t obvious what it was doing there. What the portal is saying is there a portal portion to this linking process that I needed to complete. When you click the edit link, it takes you to a page where you finish this process by selecting the Windows Store app again and clicking an “Associate” button to link the two.

The portal knew what needed to happen, but it didn’t communicate it well. I wish it would have just put that associate page in front of me rather than dump me onto the general submission error page without any useful instructions.

Links that Helped the Upgrade Process

All of these links were critical to me being able to upgrade Modern Delicious to Windows Phone 8.1. Without these, it would have taken me much longer than it already did.

App Bar Icon Symbol Names

Migrating from the LongListSelector to the ListView in Windows Phone 8.1 XAML Apps

Using a Behavior to Control the Progress Indicator in Windows Phone 8.1 XAML Apps

I had a frustrating issue yesterday playing Titanfall, and it took me some time to find an answer. Any right stick movements to turn left and right were stuttering badly and turning very slowly, which meant that I was pretty much a sitting duck for anyone coming at me from any direction except straight on. I’m pretty terrible normally, so this made me the worst player every round by far. I tried exiting the game, changing controller batteries, and powering off and on the Xbone with no luck. It turns out the trick is to power cycle the console by holding the power button on the front until it turns off, then start it up once again. You’ll know it happened correctly if it boots to the green Xbox One screen rather than the black one with the Xbox logo. Hope this helps anyone that runs into the same issue.

Credit goes to a GameFAQs forum post for the answer.

This is the second time I’ve come across this issue due to upgrading Windows, and the usual searching isn’t terribly helpful. With UAC in recent flavors of Windows, you’re required to run Visual Studio as an administrator to debug a website using IIS. This means that when you debug, the application launches as an administrator as well. This is fine 99% of the time, except for when you want to interact with other programs that don’t run as an administrator. Most of the time, you just run the other app as an admin and you’re good to go. Unfortunately file explorer does not have this ability - which is also why dragging and dropping files into Visual Studio no longer works.

You have two options for this. The first is to close the instance of Visual Studio which is running as an admin, and restart it without using Run As Administrator. This first way is by far the easiest fix, but it isn’t always an option. The second way is to completely turn off UAC. The option from the settings charm/control panel is really a “how annoying do you want me to be” meter and doesn’t even come close to killing it, so you have to do it in the registry. Run regedit, navigate to HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\System, set EnableLUA to 0, and reboot. This will likely cause issues elsewhere, so you will probably want to turn it back on once you’ve completed debugging.

Sources:
Disabling User Access Control in Windows 8

Why my WPF application has Drag & Drop disabled

I’ve been trying to untangle the snarled mess that results from the old Nuget “Enable Package Restore” option. It would seem to be very simple for most things according to the official doc. And for most projects, it is exactly that easy. The problem I kept having after following the TFS steps was that no matter what I did, the Nuget.targets import line would add itself back into any web application project I removed it from. Open the .proj file, remove the line, and as soon as you reload the project, it adds the import node back in. It seems to stick more with web projects for some reason. Here’s the fix:

  1. Kill the entire Nuget folder at the solution level.
  2. Despite doing that, I had to open the .sln file in notepad and delete out the nuget block at the top.
  3. Now open the web application .proj file and delete out the nuget.targets import line.
  4. Also look for a RestorePackages node and delete it out. This will be towards the top.

Now when you reload the project file it will finally let the Nuget references go. And don’t even get me started on getting the package restore during team build on TFS working after this. Is this really the best solution?