Hey all! Apologies in advance for the lengthy post.
My sister and I were at the World in December and did RotR on the 9th. We followed this thread (and similar ones on other WDW forums) religiously leading up to it. Needless to say, these discussions were immensely helpful, so thanks!
After our trip, I only occasionally checked back in on this thread to see what the latest mayhem was. But lately I've been wondering to what extent our collective assumptions about how the app appears to work from the user interface side mesh with what's actually going on behind the scenes (the communication between the app and Disney's servers).
So I used Fiddler (a Web debugging tool) to examine the HTTP requests made by the app on my iPhone SE, and here's what I found:
- The app makes two API calls that determine whether the all-important Join Boarding Group button is enabled:
- getQueues: Called when the app is first loaded and may be called when you tap the Find Out More button.
- getPositions: May be called when you tap the My Status button or do a pulldown refresh on the Boarding Status page.
- The responses returned by these calls are identical for the purpose of joining a BG (getPositions has a couple of extra fields that only contain data after you actually join a BG), but it's important that they're actually separate API calls, because...
- Notice how I said "may be called"? That's because each of these API calls is limited to one request every 60 seconds, no matter how many times you hit the buttons or refresh the status page, unless...
- If you force quit and reopen the app, it'll immediately be able to make both API calls again.
How can we use this information to increase our likelihood of success with the boarding group process? Here, in my mind, are the key takeaways:
- It's absolutely imperative that you have both API calls at your disposal the moment the virtual queue is opened. This means not wasting either of them during the 60 seconds leading up to it.
How do you do this? I recommend making sure you're on the home screen of the app at least a couple of minutes beforehand and not tapping anything until it's time. This is the most crucial step in the Demarke method (besides getting into the park before opening, I guess).
- If the Find Out More and My Status buttons both fail to present you with an enabled Join Boarding Group button, your immediate next step should be to force close and reopen the app. Refreshing the status page or going back and tapping through the buttons again will do nothing for the next 60 seconds, whereas with reloading the app you probably lose about 10 seconds max.
- Using a clock that's as accurate as possible (assuming that Disney's servers themselves have reasonably accurate clocks) is essential. You definitely don't want to waste both of the API calls because your phone's clock was a few seconds fast. Here are a couple of options for avoiding this:
- Anytime between entering the park and loading the MDE app to wait for the virtual queue to open, go into your phone's date and time settings, disable the option for setting the time automatically, and then reenable it. This should cause your phone to resync its clock.
- After making sure the MDE app is on the home screen and ready to go, open your Web browser to a site like Time.is that's synced with an atomic clock. Depending on how fast you are at switching between apps, switch back to the MDE app a half second or so before the virtual queue opens and start tapping those buttons.
One thing I like about this method is that you can see the seconds, which you don't get from the clock in the corner of your phone. Also, with a newer iPhone or Android with gesture navigation, swiping to the previously used app is really quick and easy.
Of course, there's always the chance of being tripped up by something beyond your control (random connection failure or phone/app glitch), but hopefully this information can help you stack the deck in your favor as much as possible.
Thanks for reading!