In-App Purchase Depending on Location - ios

Does the in-app popup changes currency depending on the location?
For example:
If i'm in the US the currency = $.
If i'm in Japan the currency = ¥.
If i'm in Germany the currency = €.
If yes, is this automatic (like apple handles it for you, you just have to register $ currency)?
If it's automatic, how can i test if it's working? I tried changing my location in the settings and the currency is still in $.
If it's not automatic, how do i enable it?

Not location, but depending on which country's App Store you are logged in, yes.
The pricing table for the different currencies is available in Apple's documentation (note that you choose pricing levels, not dollar amounts).

Related

How to fetch InApp Purchase Product Prices in Local currency in iOS?

I am implementing InApp Purchase Products in AppStoreConnect where we get to choose the price in Dollars($). Let's say I have created a Product with the Price of $0.99 which is equivalent to £0.89. Now I want to display the equivalent price of United Kingdom in my App. But unfortunately All I am able to achieve is to get £0.99 from different solutions that provides locale price based on the settings. But this is wrong as I want to ideally display the actual price in GBP which is only 0.89 and not 0.99.
Any help in resolving this would be very helpful.
P.S:- I have tried solutions from How to get locale currency price for in-app purchases in iOS? but none seem to work properly.

Setting the price for an IOS App individually for countries

Is this really true, that we cant set the price per country individually in Itunes Connect for an IOS App ?
I mean 1 dollar has a different real value in different countries.
Yes, it's true.
You set the price of your application and that price will be calculated automatically depending on the currency of the country in which your app will be distributed.

Testing localized in-app purchases

Running the app with the Scheme set to another language does not affect the SKProduct received from iTunes in testing. The only way I’ve found to affect change is to create a new Sandbox Tester User in iTunes Connect with an iTunes Store for each... and every... language you might want to test.
Then - you should NOT login with that user on your device through Settings. Run your app and login with the test user when asked.
This successfully got my phone to be defaulting to the App Store for a different country.
But still, when I printed to the console each SKProduct’s .localizedTitle, .localizedDescription, and .price - only the price was translated to the different country’s numbers. The title and description remained in English (I’m developing in the United States). All the languages are set up in iTunes Connect.
When I click to purchase an in-app, the system pop up is in English: "Confirm Your In-App Purchase" and then "Do you want to buy one ____ for ___?" and "Cancel" and "Buy" buttons all in English. The first blank is filled in by Display Name that I set in iTunes Connect. But it is still using the English version. And the second blank is filled in with the price, which IS SHOWING in the language of the Test User's store. [separate issue: Japanese shows the Yen symbol and price. Spain shows the Euro symbol and price. Mexico shows the Dollar sign with the Peso price.]
So only the price translates for my Sandbox Tester account. Anybody know how to get the title in a different country’s language during testing? Not only do I want to make sure that it will look right to people in each country I've localized the app for, I’d like to set the SKProducts' titles as labels on buttons in my app to launch the in-app purchases. I could set these through the Localizable.strings file but would prefer to pull it from the SKProduct since I've already entered that information through iTunes Connect.
Thanks for any help!
Here is what I've been able to figure out, to the best of my ability. This is pretty tricky to test... sometimes needed to run the app 3 or 4 times and load the list of SKProducts over and over again before a localizedDescription would change to the language I was trying to test.
I was trying to figure out if these are controlled by logging in with a Sandbox Test User that was created with an iTunes Store set to another country? Or by the iPhone's language chosen in Settings?
SKProduct's .price, SKProduct's .localizedTitle, SKProduct's .localizedDescription, and the system pop up "Do you want to buy one ____ for ___?" / "Cancel" / "Buy"
It seems to me that to properly get all the values for each language, you need BOTH to have changed the phone's system language AND to log in with a Sandbox Test User created for the country's App Store.
To populate my button text, I did the following:
let formatter = NSNumberFormatter()
formatter.numberStyle = .CurrencyStyle
formatter.locale = productName.priceLocale
let cost = formatter.stringFromNumber(productName.price)!
labelForButton = "\(cost) " + productName.localizedDescription
You are right: change Scheme's language will not affect the SKProduct.
Go to change "App Store's Country/Region", then you can see the changes, how to change:
https://apple.stackexchange.com/a/89186/283550
Also refer to my answer in another post:
https://stackoverflow.com/a/52418249/3260008

How do I know in which countries is my app available through App Store?

Each country's AppStore restricts apps by language. If I have my app's descriptions in languages A, B and C, how do I know in which countries it will become available? There seems to be no easy way of knowing this other than checking App Stores for each of the 200 countries one by one, unless I'm missing something of course.
Additionally, if I have an English description, will my app be available in countries that are restricted to British, Australian and other variations of English?
You can also check the availability of the application published on apple store connect, by opening the edit option for the availability of regions and countries.
The steps are as follows:
Open app info on the App Store Connect,
In the General tab select the Pricing and Availability option,
Under the Availability section next to All Countries or regions selected, click Edit,
The Country or Region Availability window opens. Here you can see and select the countries and regions in which the application may be available.
There is no such restriction per language (if there is, I would be interested about any documentation respecting that restriction).
What happens is: if you have languages A, B & C, then you need to have one that is the main language, let's say it's B. And let's say A is English, B is Portuguese and C is Spanish.
Any country that has English as their language (e.g. Australia, USA) will have A language.
Any country that has Spanish as their language (e.g. Ecuador, Spain) will have C language.
Any other country will show Portuguese language in the description.
See screenshot, where it states "Principal" that is the main language:

In-app purchase custom price

I've been searching for a while, but it may be too obvious and people don't post about it.
I want to know if I can put a dynamic price for a product.
I have a delivery application and the price may vary with the distance.
Also, it can be a non integer price, like $2,43.
Is it possible?
Also, I couldn't set a price at iTunes Connect, I need to be reviewed first?
Thanks a lot in advance!
As noted by other poster, you cannot have variable in-app purchases. You have to select one of the provided price tiers.
Now assuming you are making a taxi-service app then what you need to do in your app is provide the user with a list of prices that are fetched from your server for example how much will it cost to go from point A to point B. You can then "charge" them outside of the in-app purchases using your own pricing service (credit card over the phone etc).
Again in-app purchase doesn't work with what you need.
You can't set custom prices for an In-app purchase. You need to set the price using one of the tiers available.
You can set different prices for the same product by editing the the In-app purchase, selecting a tier, setting a "Price Effective Date" and "Price End Date" and hitting the button "Add to schedule".
EDIT: This can now be done using Apple Pay
You cannot set your own custom price for an in-app purchase, you can only use the ones that apple provides you with (this is most likely to stop things like in-app purchases for $0.01 or $100,000). Apple gives you plenty of price ranges, so you could just use $1.99 or $2.99 for your needs. In-app purchases are mostly non-integer prices.
Yet, if you were to go threw a third-party, other than apple, say PayPal you could do this easily, yet you won't get as many functionalities that IAPs have, and it would be near impossible to trigger something like removing ads inside of the application on this payment unless you have a server that you are using for your application. To implement PayPal, you could look at their tutorial HERE.
In short, no, you cannot set your own prices for in-app purchases, you can only use the ones that Apple provides (which can range from 0.99 to 999.99), yet, you can use a third-party like PayPal to get this functionality, although it really isn't needed

Resources