Manage country wise databases on different servers in iPhone App - iphone

I have current a developed app which I am going to submit in just few days .
Currently The Application shows data by calling a web service and fetches data from a server .
Now client requirement is to build two different databases.
So the question is should I make two different builds for two different countries or should I make alternative call to the web services based on the format region selected in the iPhone .
e.g, if ( country == uk ) then
call uk_Service;
else if( country == us ) then
call us_Service;
Please tell me which approach is better. And also if should I make two different builds then can I submit both of them at a time in the AppStore .
Thanks

I don't think it is a good idea to have two different builds for the App Store. This would mean that you have to do all the organisatorial overhead in iTunes Connect twice. For example an update with all the screen shots and textual descriptions have to be submitted twice. Also you do not have a chance to ensure the release of both submissions will be synchronous.
Why don't you provide a setting to the user where he can choose the country he wants to use your app for?

I would go with the if/else option purely because maintaining 2 apps instead of one will be more work - eg when you want to fix a bug you'll have to do it twice over. Another advantage of using the localised version is that a user can change their localisation and start using the correct database - eg they buy the app in the US and then move to the UK, change their settings and can start using the UK database without a problem

Related

How to change or inject date to Sharepoint application to test across months

Here is the situation:
I've got the application that requires different actions for different months. For example if I'll create a task that requires some actions for next 5 months I need some kind of method to keep jumping ti next months to confirm correct behaviour.
Usually I would just connect custom NTP for the server and than change date to whatever I want but this application works on Sharepoint online and as far as I know I can't do that (even if I'll it will affect all users not app under test only).
Another problem is that method should be easy and possible to explain or at least show to business during UAT.
Thanks in advance.

Password login for ios app

I am currently developing an app for a company that is in a very competitive field. I have finished all of the features of the app that they requested except for one, making it somehow protected from their competing companies to download and use. I thought that I could set up a UIViewController with a password field that would check against some kind of database, but I'm not sure how to do the checking against a database part nor the practicality of it, and was hoping I could get some ideas on how to do this so that other companies couldn't steal and use this app without a password or something that changes like every 30 days or something and is kind of like an activation code.
Review the WWDC 2012 video "Building and Distributing Custom B2B Apps for iOS". I'm unsure if your app is in this B2B classification, it seems that it might be from your description.
What I ended up doing (if everyone needs a reference) was setting up a server with an SQL table that has pass codes in it. Since apple does not allow for any sort of system that requires you to "buy the app from outside the app store" I made a dumby username field (shame on me) that takes any value you like and then requires to have a pass code that fits. Once the pass code gets authenticated with the web server in a json sql request (there are plenty of api's to do this with) it comes back and sends the user to the first screen and sets a value in a plist with how many days of use the user has left. Whenever the user opens up the app it checks to see if the date is different from the last date logged in (saved in the same plist file) and if it is different then it calculates the difference and deducts that many. When the count reaches 0 it sends the user to the pass code authentication screen again. A bit complicated but an effective method of getting around Apple's restriction on not having a sort of pass code system like this. Thanks for the answers, unfortunately enterprise did not work for this company since they needed to be able to distribute the app to as many 3rd party members as they wanted to without having to worry about them leaving the company for other suppliers and remote management of the app (I.e ability to remote uninstall) was also not an option. Hope this helps someone someday!

How to locate any mobile number using iPhone application

I want to make an application on iPhone which locates the mobile number region(area) when the user gets a call. Can anybody give me guideline how to accomplish that task?
You can't access the details of an incoming call on the iPhone.
Crazy idea: User would define a phone number of your server (SIP, VOIP) as "forward when declined"-number. When the user gets a call, he would simply decline it, so it would be forwarded to your server. There you could extract the information and send it to the iPhone (Push Service). And finally you would redirect the call back from the server to the user's iPhone.
For anyone looking for an answer to the second part of this question (how to get the location for a number), there is a similar question (asked interestingly enough one day before this one) with several answers here:
Telephone area code to city name on iOS
I also discovered an SQLite database named calldata.db in the private framework AppSupport.framework that contains US cities, states and area codes, as well as prefixes (the three digits that come after the area code).
Using a query like this you could find out that area code 212 is New York, NY:
SELECT * FROM citycode, npanxx, npa
WHERE npanxx.npa = 212
AND citycode.code = npanxx.rate_center
AND npanxx.npa = npa.npa
I don't however know if accessing/packaging this database would violate any agreements with Apple (I do know that the Default.phoneformat file from AppSupport.framework has been packed with several apps which had no problems getting into the App Store, see comments here: https://stackoverflow.com/a/13116227/381233). Perhaps there are some methods in the AppSupport.framework that would get this information more easily, but that would definitely not be allowed in the app store.
As for the other part of this question (access the details of an incoming call), this would most likely be possible on a jailbroken phone. No doubt there's already a tweak in Cydia that does this.

get data from online once and then viewable offline

Okay, I want to have an app that takes phone numbers from an online database and displays them in a table view. When the user is not online, I want them to still be able to see the numbers they already got from the database in the table view. If the user manages to go back online, the database updates the view. My question is, is this possible to do and if so, what's the best way to approach it? (bit of a newbie, please help me out)
There are many ways to do what you are asking, depending on the complexity of what you are after.
Could I suggest the following steps (I'm not sure which ones you can do, and which ones you are having trouble with).
Connect to the server and retrieve the list of phone numbers
If the database has a web server front end this might be as simple as sending a get request to the server (see NSURLConnection) and parsing the result. Otherwise you will need to know/tell us what type database you are using.
Store the phone numbers on the device
Use SQLite to store the numbers on the device (See iPhone SQLite Resources)
Check for internet connectivity
Periodically check for internet connectivity, and if a specific time has elapsed since you last polled the server, retry. (See Checking iPhone internet connectivity)
Although you’re probably looking for a native app solution, you can also do this with a web app.
http://diveintohtml5.ep.io/offline.html
I am a new developer iPhone developer, "learning" to be precise. I came across the useful NSUserDefaults (a dictionary in which you can store/restore state even after your application relaunches). Problem with this dictionary will be memory in your case. NSUserDefaults is sort of global to all applications and yours may spoil the show for other innocent applications (like Weather :D ).
To work around this, you can have your application declare a property list file where you store a few numbers (best practise would be the most recent but you can use any selector of choice). Look for an appropriate time in your run loop to store these numbers into your property file and load them when the application starts.

Sync (button) on Iphone Application

Can anyone tell me How does the Sync Button on many Iphone app. works (like 'Le Monde').
The button download and replace all files of the application? only look for change (new entry) on the database and add them?....
Thanks,
Typically a button like that is making a web service call, depending on the call you may be updating or replacing the information currently on the device.
Some web services will allow you to ask for information since a certain date:
/FetchArticles?afterDate=200911011952
Some will just provide you with a set amount of information.
Most of the time the calls to a web service will return light enough data that you can just replace what you had with what you fetch, but sometimes the data is a little heavier(images, video, etc...), so you'll want to hang onto what you already have and add to it.
Without knowing more about your App, or if it even uses network resources it's hard to provide any more help.