Best way to offering multiple subscriptions for one user (iOS, Android) - in-app-purchase

Does anyone have experience implementing multiple subscriptions model for an app? I wasn't able to find proper documentation about this topic. The most common way to create in-app subscription model is one-subscription per one-user. But I want to offer one-subscription per one-item(in my app). This means that users can create multiple subscriptions if they want to subscribe to multiple items. Each item is functionally the same.
For example, If the app is a pet location tracker and wants to track both pet A and B, the user has to subscribe to each A and B respectively. It means a total of 2 subscriptions.
Please explain it to me.
Thanks.

Never thought about such a use case, but for iOS you can create multiple subscriptions. So you could create a subscription PetA, PetB, PetC and so on. But, I think you asked for a more dynamic approach where you create a Pet subscription and the user can buy as much as he likes. As far as I know this isn't possible.
A different approach would be to create a subscription hierarchy: onePet, twoPets, threePets and so one. Your user can then up or down grade between those subs depending on how many pets he wants to track. Could get messy if you also want to offer different durations.
A third approach could be to use consumable IAPs. These can be purchased as often as the user likes, but have the disadvantage that you need to keep track of the validity period on your own and they can't be synced automatically between multiple devices.
For your pet example I would go for the second approach and offer a onePet, twoPet, threePet and a unlimitPet subscription. This is the most maintainable approach as long as you do not offer endless duration variations. Also this gets synced automatically with all devices of the user and if you like you can also support family sharing.

Related

Can we change start date of auto-renewable subscription plan for iOS Apps?

We are working on an app right now and want to add a referral program in it. We are thinking a subscription-based model and want to extend free trial period if the user invites a friend and that friend will also get 7 days more on trial period. My question is if a user already subscribed and a first deduction will be on 1st June, how can we change it to 8th June after inviting friends? And Apple allows this? Please share code to how to do this. Thanks.
The short answer: It isn't possible to extend the duration of a given trial. The only way is to offer another one.
Apple provides you two ways to provide trials. As far as I undestand your intended behavior, you would need to combine both.
The first way is to provide a trial before paying, by offering an introductory offer. For each subscription you can create an individual introductory offer with its own duration. Each user can only receive one introductory offer per subscription group (see here for detailed information and how to create introductory offers). That‘s the reason why you also need the second way, though.
The second way is done by offering a subscription offers. Those can be granted as often as you wish, but require the user to have an active re-newable subscription (which he has, if he used your introductory offer).
Unfortunately the second way isn't simple to implement. You need a server to validate receips and to allow users to register, so you have a way to identify them. Also the server is responsible for generating the subscription offers.
You see subscriptions isn't an easy topic and so I hope you can understand that I and probably no one else can write you the code to achieve this. Apple provides a lot of informations and example code in the links I‘ve added. Work those through and come back with your code related questions and I think everyone will gladly answer them.
It's not possible using iOS subscription but you may need to create your own logic for free trial and remove trial from in-app subscription plan. In this way, you can promt user to subscribe after your custom free trail or even after extended free trial.

Adding functionality to a product

I have an SAAS online product (it affects people with twitter accounts, suggests people\pages to follow based on your previous interests).
I would like to add the option to schedule tweets (an ability to not send a tweet now, but schedule it for later, so a person can schedule several tweets at a time and it will be send out during the week) to my product, because I have noticed a lot of people pay for it.
How can I add this functionality to my product, in a way that will be competitive and people will use it?
I would greatly appreciate any help with this, since it's a key for my product's growth.
Thanks!

How to get user's age category inside an iOS app?

The Apple App Store has some fairly strict requirements on what content an app can display and still meet the age ratings. I'd like to add a feature that can display content created by any 3rd party which means that, though "adult content" is not appropriate, it's not possible to guarantee that some spammer or vulgar person doesn't post inappropriate things.
I'm considering blocking access to that particular feature of the program for younger users.
How can an iOS app determine the age "category" of its user in order to choose what features to provide?
Other suggestions on how to deal with the issue of un-vetted 3rd party content is also welcome.
Ok so basically you want to know if there is a way to detect the users age and thus display certain features as is appropriate.
Well two ideas come to mind:
IDEA 1
You could try using the built in contacts API to see which contact the user has set themself as. If they have one, then check if it has a birth date. And thus figure out their age.
IDEA 2
Ask the user to enter their birth date in when they launch the app for the very first time. Then figure out the age and save it in a NSUserDefault. You can then use that value throughout the app to determine what features and posts to show the user.

Paypal recurring payments with variable amount

First, notice I have read many post regarding this topic, but the info provided is not enough for me or is not accurate.
I´m developing a website with AngularJS and Ruby on Rails that offers different services. Users can subscribe to these services (one or many) and they get a Paypal Recurring Payment (through a profile) to pay these services (using merchant API). For a fixed amount the service is working ok for me.
The problem is, the amount can be different from one period to another, depending on the number of services the user is subscribed.
I have read Paypal docs, but It´s still not clear to me what is the right approach.
My approaches are:
Once a user subscribes a new service, I can remove the existing recurring payment profile (with fixed amount) and create a new one. This would be ok, but I have read I can´t delete a profile automatically from my application. I can only create. In order to delete an existing profile, I have to do it manually, by login in my business paypal account and delete it. If true, then this is not a solution for me, because I can´t do all flow automatically. However, this is quite strange for me. Is this true? If not, could you please let me know how to do it?
Although, I have not read deep on it, I read on a post I can use Reference transactions to implement this. Is this right?
UPDATE
https://developer.paypal.com/docs/classic/express-checkout/integration-guide/ECReferenceTxns/#recurringreftxns
As far as I understood, Reference transactions let me vary the amount to get from the buyer when I run it, but the problem is that this operation does not executes recurring (managed by Paypal). I should keep the logic in order to execute it from my application. Right?
Any other approach or clarification is welcome.
UPDATE
My first approach is to create just one variable recurring payment with the amount of all services subscribed. But, maybe the solution is to create a recurring payment profile per each service?
1) This is true if you're using Standard Subscription buttons, but if you're working with the Recurring Payments API you can cancel the profile using ManageRecurringPaymentsProfileStatus.
2) Yes, with reference transactions you can charge any amount you need to at any time, but it would be left up to you to build your own recurring payments system, basically, utilizing reference transactions. You could have a script run each day that goes through all your accounts and processes due payments accordingly.
Another option would be to have your users create a Preapproval profile and then use the Pay API to process payments using the preapproval keys. This is very similar to reference transactions.

Transferring open account records between customers

My customer is wanting to consolidate all the of their retail sales in AX under one customer per country.
Currently a new customer is created for each sale unless the customer has previously made a purchase, in which case the customer is reused. One requirement of the functionality being implemented for this is to merge open AR associated with one customer record to another customer.
Could this be handled with a payment journal? If so, any suggestions on how the journal lines should be constructed?
The easiest would be to change the account number in CustTrans and CustTransOpen in a job.
Also consider if ledger dimensions need changes, if so much more is involved.

Resources