Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

How we migrated our LanScan Pro users to LanScan on App Store #8

Open
debookee opened this issue Jun 11, 2018 · 0 comments
Open

How we migrated our LanScan Pro users to LanScan on App Store #8

debookee opened this issue Jun 11, 2018 · 0 comments

Comments

@debookee
Copy link

debookee commented Jun 11, 2018

The motivation

At some point, nearly same LanScan code repeated itself 3x in our apps:

When I started coding in 2011, I probably looked at the in-app purchase code, but as a total beginner, found more easy to have two different apps: a free limited one (4 hostnames shown), and a paying app with all features (all hostnames shown + custom comments).

Later in 2015, I implemented In-App purchases in LanScan, which started to cause troubles in users mind.

So the initial motivation was:

  • Simplify user understanding of LanScan on App Store
  • Simplify code base internally
  • Simplify release on App Store (2x releases, 2x screenshot, 2x notes, ...)

Who did that before?

Of course, Apple doesn't help to move users from one app to another.
It sounds easy cause they have same features and nearly same name, but internally, those two apps are isolated, with different bundle ids.

It's like moving Microsoft Office users to Call of Duty.

I found only one example on the net:
Devs created a new app on App Store, notified users on the old one, and made it free for a few weeks...

Specifications

  • No new app
  • LanScan Pro users migrate to LanScan with same features for free
  • Must use standard Apple API and In-App purchases, without callbacks to own servers (Risk of App rejection+++ which was eventually the best argument when app was rejected)

How LanScan can know that user purchased LanScan Pro?

This was the tricky part and I solved it by using a token:

  • LanScan Pro is updated from v5 to v5.1 specifying to users that they can migrate
  • A unique token linked to current hardware is created in LanScan Pro
  • User can then download LanScan v6 for free, which will be temporarily limited
  • User enters the token in LanScan, the same code is calculated to validate the token, LanScan know that the current user has bought LanScan Pro and unblocks its limitations.

Free non-consumable In-App purchase

User may have different hardware and when LanScan is unblocked for free with the token, it must be unblocked for all new LanScan downloads on other devices.

The idea was to use Apple standards with a free non-consumable In-App purchase.

As soon as LanScan is bought for free thanks to the token, user can "restore previous purchases" linked to its Apple ID on other devices.

Various screenshots

screenshot

screenshot

screenshot

App Store review & LanScan Pro rejection

Of course, Apple did reject LanScan Pro when they saw the token stuff.
But by chance (or bad review), they accepted LanScan, which included the same token code verification: this was an argument for me to accept or both or none, if at least I could speak with someone at Apple.

This proves that review team checks the GUI, new icons click on them and react, but don't check the code change internally: LanScan Pro GUI was obviously changed so that the user see the migration notification, while LanScan had just a new menu created in Help for the token validation.

Day 0 : LanScan v6 accepted but LanScan Pro v5.1 rejected by Apple Review Team.
They argument is : "mechanisms outside of the App Store are forbidden" and propose to argument my choice.

Day 4 : They answer a 2nd time with a super laconic "mechanisms outside of the App Store are forbidden".
Meanwhile, some LanScan Pro users discovered LanScan v6, with the menu with token code validation and start to email the support for "what the fuck we paid LanScan Pro and you won't support it?"

Day 4 + 2h : I made an Appeal of my app rejection to App Review Board Team.

Day 4 + 3h : I started to code an alternative in case of rejection, with a merged code between both apps

Day 6 : Finally received first questions from Apple, technical and directly linked to the app, this 2nd App Review Board Team wanted to understand my token stuff and how "my servers are notified".
I answered: "No own servers, everything is done on Apple side with in-apps, and token is calculated inside the app, with standard API, please love me."

Day 7 : LanScan Pro is validated.

Migration

Migration is happening slowly, day by day, following this doc, almost no email at support, except to understand the paying $0.99 upgrade for new TCP scanner in v6. (answered in this FAQ)

Lesson learned : respect your users, respect Apple standards with no callback to own servers, "stay hungry, stay foolish" with an original token code validation and things will happen!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant