iOS Question Question about In-App-Purchases

Filippo

Expert
Licensed User
Hi,

Apple has these 4 options. The 4.Option looks like the Google option "ConsumeProduct".
If it is, is there an option like "manager.ConsumeProduct"?
Where can you set the duration of the subscription?

inapp.JPG

The translation:
Subscription without automatic renewal

A product that allows users to purchase a limited-term service. The content of this in-app purchase can be static. This subscription type will not be renewed automatically.
 

tufanv

Expert
Licensed User
Everything is manual for non renewing subscriptions. You need to implement your own backend for storing the subscriptions, check if they are still active etc..

Hi,

Apple has these 4 options. The 4.Option looks like the Google option "ConsumeProduct".
If it is, is there an option like "manager.ConsumeProduct"?
Where can you set the duration of the subscription?

View attachment 76978
The translation:
 

Filippo

Expert
Licensed User
Everything is manual for non renewing subscriptions. You need to implement your own backend for storing the subscriptions, check if they are still active etc..
Thanks @tufanv ,
I thought apple had a new option inserted comparable to the google option.
 

Filippo

Expert
Licensed User
Everything is manual for non renewing subscriptions. You need to implement your own backend for storing the subscriptions, check if they are still active etc..
Saving the subscriptions is no problem, problem is how can the subscriptions be restored.
The sub "MyStore_InformationAvailable" shows no info about date of purchase and "TransactionIdentifier".
So I can not check what and when was bought.

B4X:
Private Sub MyStore_InformationAvailable (Success As Boolean, Products As List)
    Log("InformationAvailable Success = " & Success)
    If Success Then
        For Each Product As ProductInformation In Products
            Log(Product.Title)
            Log(Product.ProductIdentifier & ": " & Product.LocalizedPrice)
            Log(Product.Description & ": " & Product.Tag)       
        Next
    End If
End Sub
 

Filippo

Expert
Licensed User
I found this info under In-App Purchase Programming Guide.
Non-renewing subscriptions differ from auto-renewable subscriptions in a few key ways. These differences give your app the flexibility to implement the correct behavior for your needs, as follows:

  • Your app is responsible for calculating the time period that the subscription is active and determining what content needs to be made available to the user.

  • Your app is responsible for detecting that a subscription is approaching its expiration date and prompting the user to renew the subscription by purchasing the product again.

  • Your app is responsible for making subscriptions available across all the user’s devices after they’re purchased and for letting users restore past purchases. For example, most subscriptions are provided by a server; your server would need some mechanism to identify users and associate subscription purchases with the user who purchased them.
The problem is, how can you restore the product if you do not know the buyer user-id?
 

tufanv

Expert
Licensed User
I found this info under In-App Purchase Programming Guide.

The problem is, how can you restore the product if you do not know the buyer user-id?
You need to implement a user registration system. Or I will save you time, once I implemented a system like this: no user registration, give a pin number to user after purchase and save the pin number with subscription start end dates, give an option to restore with pin number, increment a restoreused int in the database for each successful restore and if it is restored for more than 3 times do not accept restore.( to avoid sharing of pin)
 

Filippo

Expert
Licensed User
You need to implement a user registration system. Or I will save you time, once I implemented a system like this: no user registration, give a pin number to user after purchase and save the pin number with subscription start end dates, give an option to restore with pin number, increment a restoreused int in the database for each successful restore and if it is restored for more than 3 times do not accept restore.( to avoid sharing of pin)
Hi @tufanv ,

How should I imagine that?
In the sub "SyStore_PurchaseCompleted" I show a dialog with a random pin, which the user should note / remember.
Thereafter, the random pin is saved with date of purchase and product name in the database.
If the user needs to restore the app, then it must enter the pin.
Did I understand it correctly?

Have you already implemented something like that?
 

tufanv

Expert
Licensed User
Yes totally correct. They have accepted my restore mechanism for my app coinwatch. There is nothing wrong with this system. User has to save his pin and use it on another device if needed.


Hi @tufanv ,

How should I imagine that?
In the sub "SyStore_PurchaseCompleted" I show a dialog with a random pin, which the user should note / remember.
Thereafter, the random pin is saved with date of purchase and product name in the database.
If the user needs to restore the app, then it must enter the pin.
Did I understand it correctly?

Have you already implemented something like that?
 

tufanv

Expert
Licensed User
By the way, leave the pin visible on some user control panel screen for example, because probably they wont save their pin and will have problem. So they should be able to look up their pin while their account is active.
 

Filippo

Expert
Licensed User
By the way, leave the pin visible on some user control panel screen for example, because probably they wont save their pin and will have problem. So they should be able to look up their pin while their account is active.
Yes, that makes sense. :)
 

Filippo

Expert
Licensed User
Hi @tufanv ,

I have now implemented my own user registration system.
It cost a lot of work, but I think it has paid off.

upload_2019-2-6_20-21-1.png
 

Filippo

Expert
Licensed User
I want to do something that Apple does not like very much. :D
When license time has expired, the user can usually buy a new license in Apple Store.
But I want to give the user a possibility to buy the license directly from me. He should only send me his old license key via e-mail and I say in how the payment should be made.
If the payment has been successful, then I simply change the license time into my database (internet) and the app can continue to be used.
What do you think Apple would have something against it?
 

tufanv

Expert
Licensed User
They will certainly close your account.

I want to do something that Apple does not like very much. :D
When license time has expired, the user can usually buy a new license in Apple Store.
But I want to give the user a possibility to buy the license directly from me. He should only send me his old license key via e-mail and I say in how the payment should be made.
If the payment has been successful, then I simply change the license time into my database (internet) and the app can continue to be used.
What do you think Apple would have something against it?
 

Filippo

Expert
Licensed User
I found you explanation.

Most of the apps you refer to use a third party payment mechanism and are operating under the 'reader app' exception in the guidelines:



  • 3.1.3(a) “Reader” Apps: Apps may allow a user to access previously purchased content or content subscriptions (specifically: magazines, newspapers, books, audio, music, video, access to professional databases, VoIP, cloud storage, and approved services such as classroom management apps), provided that you agree not to directly or indirectly target iOS users to use a purchasing method other than in-app purchase, and your general communications about other purchasing methods are not designed to discourage use of in-app purchase.
 
Top