3

I have a number of apps on the store, including several older paid apps. I'm releasing a new one that includes some of the functionality of the old ones via in-app purchase. I really don't want to double charge customers who have paid for the older apps. Is there a way, within my new app, to detect if a user has purchased my old apps, so that I can unlock the corresponding functionality for free?

In the form of an example:

Say I have three apps, A, B, and C.

A user has purchased App A at some time in the past.

Within App C, can I detect that the user has purchased App A in the past, and unlock some functionality accordingly?

I know with custom URL schemes you can string some of this together, but there is no guarantee that the user still has the older apps installed. Or, if they do, there is no guarantee that they would run an update on them so I could add custom URL schemes. Are there other, more elegant, ways to do this? For example are there any StoreKit methods for detecting installs on a per-publisher basis? Or is there a way to do it using the new identifierForVendor stuff with iOS 7?

Any advice would be much appreciated. Thanks.

Murdock
  • 826
  • 9
  • 21

1 Answers1

1

You used to be able to use canOpenURL but that was kind of deprecated.

Up until iOS 9, apps have been able to call these methods on any arbitrary URLs. Starting on iOS 9, apps will have to declare what URL schemes they would like to be able to check for and open in the configuration files of the app as it is submitted to Apple. This is essentially a whitelist that can only be changed or added to by submitting an update to Apple. It appears that certain common URLs handled by system apps, like “http”, “https”, do not need to be explicitly whitelisted.

http://pxlnv.com/linklog/canopenurl-abuse-blocked-in-ios-9/

Now you have to whitelist the URL schemes you want to check - iOS 9 not opening Instagram app with URL SCHEME

Community
  • 1
  • 1
Joshua Dance
  • 8,847
  • 4
  • 67
  • 72