Appropriate in-app Type for Live Stream View

We have a sports league related App , which has player details competing in the league, Live scores, photos and videos amongst other features. All these are for free. But one of the features is on paid basis- Live Streaming of the matches on the lines of tennistv or NFL app, but there is no concept of auto-renewal as it is a timebound event not lasting over a month in a year. The viewing is on paid basis and we are implementing the payment as in-app-purchase inside the iOS app. The type of purchases are:

1. Per Venue Pass (View matches for all days at that Venue)

2. Full Season Pass (View all matches on all match playing Days this season).



According to Apple documentation:

https://support.apple.com/en-in/HT202023,

we are implementing this as non-renewable subscription.



To support the same StoreKit will not keep a record of the purchase and Apple documentation below:

https://developer.apple.com/library/content/documentation/NetworkingInternet/Conceptual/StoreKitGuide/Chapters/Restoring.html



says "If your app uses non-renewing subscriptions, your app is responsible for the restoration process".



Only way we can do this is by asking the user to to create an account in order to subscribe, and store any necessary data, such as the subscription expiry date, against their account on the server and enable usage across devices. This will help in the user being able to use the same Pass on different devices. But when submit we the app for Apple review we are getting comment:

"Specifically, your app requires users to register or login in order to purchase In App Purchase product. Users should be able to purchase In App Purchase product without login or user registration."

If we follow the above recommendation we will not have a record of the purchase on other devices or if the user reinstalls the app. Only case where Apple stores the purchases is when the "in-app purchase" type is Non-consumable, but according to Apple recommendation "Sports Pass" is to be implemented as "Non-renewing subscription". Except for "Auto-renewing subscription", we have tried using all the other 3 types and each time the submissions got rejected. So what is the appropriate in-app type for creating one time purchase for Live Streaming View ticket for a Day, a specific period or for one complete season?



Thanks and Regards,

Is the content apple-stored?


Are you sending receipts to your own server(s)?

You do not need to require that the user log in to PURCHASE the IAP. YOu CAN require that the user log in to COPY their subscription to another device. You could also do the copy function through the user's iCloud key-value file.


You could also sell a consumable item good for one watching experience anytime you want. You could also sell an auto-renewable that allowed you to view for a fixed period of time that auto-renewed.

>>You could also do the copy function through the user's iCloud key-value file.


Any pointers on how to accomplish this from a server which is php based will help first how to store this on iCloud, second how to retrieve it.


>>You could also sell a consumable item good for one watching experience anytime you want.


So you are saying I can configure the Live Stream Passes as consumable item. That means there will be no requirement to do Restore. If a person wants to use the same Pass/Ticket to view on an another device, it can be either done using iCloud key-value (will it work for consumable app type, I was under the impression it has to be used for Non-renewable subscription (NRS) type only) or login mechanism on our server, right?

If let us say I am Live Streaming Football World Cup matches, which runs for more than month. I can allow a user to see 2 matches on a day by buying 1 Day Pass (I might have upto 40-50 such passes, or see all matches for a week Saturday to Friday (some 6-7 passes) or buy a Full Season for all matches in the tournament, you are recommending I can model them as consumable and manage them using iCloud? Will Apple have any issues on modeling them this way?

The app interacts with iClloud directly - your servers are not directly involved. The app acts as a man-in-the-middle between iCloud and your servers.


Copying to another device - yes, at your option and yes you can use your server (log in required in order to copy the rights but not to use the rights).


As long as the consumable does not expire until used you are most likely ok. Your model is not ok if the consumable is "the 2016 season" because that, by its nature, expires. That would be better offered as a non-renewable subscription. But if you are offering "a season pass" that can be used, at the user's discretion, in 2016 or 2019 or 2034 then that can be sold as a consumable.

Hi,


Thanks, I think we are closing on to a solution. Some related clarifcations:

  1. So if I store the purchases in the localStorage in one device with iCloud enabled on two or more devices, the purchases will reflect on all the devices, right?
  2. In case the user reinstalls the app on one or more devices the purchase data (NRS or cosumable) will be lost if the person has not logged in earlier to copy the rights, as our server will not have details of the purchase (could this happen if the user after a NRS or consumable purchase, immediately does an app reinstall?). For example a user has 2 devices A and B and has bought one Pass which got copied to both devices through localStorage and iCloud. Now the user does a reinstall on device B. So device A has a record of Pass purchase, and device B has no Passes after reinstall. So how will the sync happen between the 2 devices, will contents of A be copied to B automatically after reinstall?
  3. If 2 is an issue will it be safer to model the Passes as non-consumables and rely on Restore Purchases in case of App reinstalls?
  4. What is the lag in sync between device and iCloud? Will a user complaint that he bought a Pass on one device but cannot use it on another device immediately?

1. Synching iCloud key-value file among devices - you need to implement this -

https://developer.apple.com/library/content/documentation/General/Conceptual/iCloudDesignGuide/Chapters/iCloudFundametals.html#//apple_ref/doc/uid/TP40012094-CH6-SW1


2. If a device writes something to iCloud key-value file and then deletes the app the key-value file stays the same. If a user later installs in a different device or reinstalls in the same device then the value in iCloud will be copied to that device. So you lose nothing. [ aside - Security may be an issue. If you use a device specific identifier on a device then that will be lost if either 1) you do not store it in the keychain or 2) you rely on identifierForVendor and the user deletes all of your apps from their device.]


3. 2 is not an issue


4. You can push the synch immediately.

Hi,


While we were discussing this we had submitted the App for review with "In-app" type as non-consumable, but Apple came with recommendation that we necessarily use NRS. The recommendation is as below:

Quote -------------

"Since the service offered by your application requires the user to make an advance payment to access the content or receive the service, please use the Non-Renewable Subscription In-App Purchase type. Non-Renewable Subscription content must be made available to all iOS devices owned by a single user, as indicated in Guideline 3.1.2 of the App Store Review Guidelines."

Unquote ---------


Some queries based on that:

Refer section 'Persisting the Purchase' and "Persisting Using the App Receipt" in:

https://developer.apple.com/library/content/documentation/NetworkingInternet/Conceptual/StoreKitGuide/Chapters/DeliverProduct.html

1. For restoring the purchases or making it available across devices, does Apple receipt maintain all NRS purchases? If it is maintained, why "use the app receipt as your persistent record" strategy only applicable for non-consumable and auto-renewing and not for NRS. The same document recommends use of own server or iCloud as strategy for NRS, why not use the app receipt?


The same link above says

Quote -----------

"Persisting Using Your Own Server"

Send a copy of the receipt to your server along with some kind of credentials or identifier so you can keep track of which receipts belong to a particular user. For example, let users identify themselves to your server with an email or user name, plus a password

Unquote ---------


2. Does this mean for NRS it is not mandatory to provide NRS purchased items across devices without logging into server as was the case for non-consumables? Without logging in I should honor the purchase only on that device and to fulfill the guideline 3..1. 2 (...must be made available to all iOS devices owned by a single user, ) the user has to necessarily login into our servers?


3. A user may have one email ID configured to iTunes Account and another email to iCloud Account. So if I use iCloud to store receipts will it not happen that a user uses one Email ID to buy NRS and use it across other devices using different iCloud ID?

Appropriate in-app Type for Live Stream View
 
 
Q