Do I need UIRequiresPersistentWiFi for this type of app? - iphone

I'm creating RSS reader application, and just wanted to know do I really need to include UIRequiresPersistentWiFi in my Info.plist file?
The only case I would find is the user read really long (loaded) article (or he read slowly) for more than 30 minutes, and boom the wi-fi get off, and he need to turn it back on.
This is super rare I know but I'm just concerned...
Thank you!

While it wouldn't be required for this type of app, for the user experience sake, I would present a dialog to the user upon the application first running to let them know that WiFi is not required, but is highly recommended. Maybe include a setting, letting the user choose if they want to put the app in "WiFi-only mode." This can be especially helpful as more and more carriers are switching to limited iPhone data plan models.

Related

iOS give users default downloadable content

I'm facing this problem while designing my iOS app. Suppose that a user purchases an app and downloads it to the iPhone. I would like to provide him with a default consumable item the first time he runs the app to use whenever he wants , however I would also like to track if the user has already consumed the item. This way if he decides to reinstall the app we can restore the transactions (if he used the item) or we can avoid possible intents to download different kind of content by reinstalling app and consuming default items each time. (Guess NSUserDefaults is not an option here).
One approach that came to my mind was using UDID(or any iOS 6 alternatives) to keep a record on server of the user's device the moment he uses the default item. But this will limit items just to the device from which they consumed content.
It would be great to support all the user's devices (like inAppPurchases), but I can't figure out a way to implement this.
Any suggestions or help would be great.
Thanks a lot.
In order to tie information to a user (not just a device she used at one time), you'll need to ask the user to identify herself and save it someplace other than the device. In other words, a backend that implements registration and login.
From scratch, this can be a lot of effort that an iOS developer didn't count on. Fortunately, there are several services in the world that provide a substantial head start. Here's a nice round-up. I've had direct experience only with Parse.com, and think it's excellent.

Monitoring the other Apps from one app in iPhone

I need to create and App that will run in the background and will monitor the user's behavior in term of applications installed, opened and deleted.
i.e Application will save the information in the database that at what time user has installed/opened/deleted an application in iphone.
I wonder if its possible and Apple will allow this??
I tried to google on it but did not get anything, i know if its possible then it would be possible by multiasking only??
Can any one please help me on the same.
Brn
Not possible. Your app can only run when the user chooses to (except for a limited sub-set of tasks like VoIP, etc).
Your app can know nothing about other apps.
iOS apps are sandboxed. I wouldn't say impossible but certainly not allowed. You'd have to find a security hole to give you root access first. Oh, and notify us when you do ;).
Edit:
Maybe it wasn't clear in my post but I was at least half joking. Not sure why you want to do what you want to do. I can imagine the following scenarios:
1) Your company wants to monitor everything their users do on their phones. In that case I would either
a) lock them down and only allow app installation through a company portal (enterprise distribution is possible in iOS) OR
b) forget about iOS alltogether. Blackberry would probably be closer to what you want, although I don't really have experience with that platform. Also, its future is not sure.
2) You're trying to do something illegitimate. Because of iOS's locked down nature it won't be easy. See how few successful attacks there have been in the last years - and that's for a highly successful platform where an attack could be high paying both in terms of money and reputation.

Is this allowed in App Store?

I am making an app for some people and they want to instantly update the app whenever they want after first submission. The changes will be like color, fonts, background color, removing a tab from tabbar...
What I was thinking was, creating a plist with entries like color, font and etc for specific views. And everytime an app starts up, it connects to a server and download the plist (if it's updated) and then load it's views according to the plist.
So for example, say the user wants to change the font from Helvetica to Arial. In plist I would have a dictionary with key named "Font" and object is the font name...So I simply update the plist with the font name "Arial" now and next time the app starts up, the font will change.
I hope I made it clear what I am trying to do. Now my question is, is this kind of thing allowed in app store? In reality, I am trying to circumvent the update system of App Store, but just wondering if it's allowed or if someone had experience doing this.
Thanks.
Your app is allowed to do these kinds of things, but be careful that your clients don't get the wrong set of expectations. The review process is not there to stifle creativity and color changes, but to prevent malicious code from running. You're not circumventing anything by using a web server to control the appearance of your app. Consider many apps which take content from the internet. You are merely taking it a step further.
The iTunes App and the App Store app have recently added a "Purchased" view without any user having to download anything new. You should be fine doing the same.
Yes, downloading content is ok. Downloading code however is not. So if the changes are due to different content you should be fine.
While nobody really knows until Apple says yea or nay, there are a few assumptions I believe to be safe:
1) If you're updating executable code (complied binary or a scripting language) you will not be accepted, and if you make it in somehow they'll yank the app and kick you off when they find out.
2) If you're updating resources (content, colors, fonts, etc.) you are probably fine, but Apple may decide to reject you anyway. Have a good case to defend yourself with if that happens.
All those changes are ok with Apple and can be performed dynamically in response to an external trigger (eg. api).
You can do whatever you want as long as you don't attempt to download and run additional code. (if you don't know what his means then you're fine). :)

Alert for reminding the user to rate the app

As you may have seen in some apps an alert pops up asking the user to rate the app in itunes and usually the alternatives you get to choose from is something like: Sure which opens the rate page for the app. The second option is No Thanks which closes the alert and the third option usually is maybe later which displays the alert later.
I was wondering how to do this.
I want the alert to be displayed after say the app has launched 20 times if that would be possible.
And how can I create an maybe later alternative which displays the alert maybe 15 launches of the app later?
And a final question is there a special link for the apps rate page? So when you click the sure button or whatever it will take your directly to the rate page.
I've used this: https://github.com/arashpayan/appirater. You can look at my fork as well for a specific mod I needed.
[EDIT: comment re NSUserDefaults]
I suggested this link because it is a full, working implementation of what you describe that is easily integrated into existing apps. I've used (and modified) it myself. NSUserDefaults is a general purpose mechanism for persisting app state. I agree with the others that it's a very useful thing to learn and use, it's just not a full answer to your question. If you choose to roll your own implementation of a rating system (nothing wrong with that) you will most likely use NSUserDefaults to store the relevant info.
Check out my answer for this similar question. I provide two different links you can use for taking the user to the "rate this app" screen in the App Store.
Direct "rate in iTunes" link in my app?
You can use NSUserDefaults to save the launch count (increment it in application:didFinishLaunchingWithOptions:), then save the user's choice another preference key. If the user says later, you could reset the counter back to zero.
I don't think there is a special rating link, but you can link to your app's specific App Store page. This was incorrect, as TomSwift points out; see Direct "rate in iTunes" link in my app?
I wrote a library for doing this with minimal effort on your part:
https://github.com/nicklockwood/iRate
I'd recommend using a library rather than rolling your own solution. It may seem like a simple problem but the library takes care of a whole bunch of extra stuff, like ensuring that the user is prompted for each new installed version, that they are reminded after a certain time if they decline, that they aren't prompted to go to the app store unless they have a network connection, etc.

iPhone app is region locked

First I need to mention that I'm not a developper, but I can probably work my way around enough in xcode to fix this little issue.
I submitted an application to the app store (that was developped by someone else who's not available right now), but it was rejected because it's "geolocked", meaning the application can only be accessed if you set your international "Region format" setting to Canada.
I need to know what modification I need to make in order for this app to work on all region formats. Is it a string I need to change or is it hidden in a plist file ? I have the feeling the fix is quite easy to apply.
I’ve never heard of an iPhone app using region formats to prohibit launches. I suspect your developer put this code in either out of naïveté or malice; either way, you’ll need to look for a section of code that inspects the region settings.
I'm not aware of something like "geolocking" of iOS application. The only thing you can do, which is quite close to your question, is to set in which countries is this application available. This can be set in iTunes Connect.