Is this allowed in App Store? - iphone

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). :)

Related

How to really ensure files can be opened?

I know there are quite a few questions that may sound similar, but they never cover my needs, so here's my own attempt:
I am pretty aware, that I can fetch the UTI of a file and use a UIDocumentInteractionController to either check if there's at least one app that can open it or ask the user to select an app, that's great.
Also the UIWebView can open a bunch of other UTIs as well, although it never tells the system what kind of and therefore never appears in the app selection dialog. So when I am sure there is no app I can still check if the UIWebView supports it and create an own view.
That works well to some degrees, until smartass apps like Dropbox appear and basically tell the system I can open every UTI!.
What now? For me that renders the whole mechanism kind of useless, I cannot use the fallback anymore and my only way is to let my app go the Dropbox-way and register every UTI as well.
Any ideas how to solve that?

Is it possible for an app to run in the background and collect data?

I want to make an app that runs in the background so that if a user is reading a web page or PDF file on an iPhone or iPad, he can mark some words, see the meaning of those words, and then have those words stored in the app's database. He can then afterwards look for the words which he has learnt and increase his vocabulary.
Does the iOS 4 API allow that? What are the limitations? Advantages? Disadvantages?
Thanks in advance
No is does not, you can only run voip. audio or navigation apps in the background.
Only one app can run at a time, and installing one app cannot effect any built in app. So no, there is no way to achieve what you are trying for here.
Your best bet is to instruct users to copy the word, open the app, and then you can snag whatever is on the clipboard then.
(Note there are multitasking APIs, but you still cant access anything outside of your app even if you convince the OS to let you run in the background for a little while)

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.

Iphone App changes that require re-submittal

I am doing an app with both static and changing information/graphics. The logo and purpose stay the same, but the graphics and text will change continuously on 1 skin. Does that matter at all? Feel free to just point me to a link that explains this better. I haven't been able to find it in the iphone devel. guide thus far.
You cannot change the name, icon, default images, or any executable or interpreted code (other than Javascript run in a UIWebView) in an iOS app without re-submittal. If you want to change any of the above, you will need to (re)submit the app to Apple.
You cannot change the keywords or screenshots used by the App store, but you can update the text description of an app in the App store without resubmitting the app.
But an app can download and change almost all other content in an app, including text, databases, button labels, colors, images, sounds, UI coordinates, Javascript, etc. There's even an Apple WWDC 2010 video on this data driven app design methodology. You can also add certain badges to an app's icon at run-time. Note that if you aren't filtering certain data/web downloads, your app may get/require an Adult rating.
As long as you are using Public APIs, it does not matter where you pull content from. I would recommend having fall-back graphics in your bundle that can be loaded if the external stuff cannot be found. Other than that, the content is up to you Apple is only trying to make sure the application itself is functional using publicly-available APIs.

Create product keys for iPhone application? [iPhone SDK]

Is it possible to assign different identifiers to copies of an app downloaded from the app store that is hard coded into the application? Or is their anyway of permanently storing an identifier in the application bundle such that when it is copied, the key remains within the bundle?
EDIT: Ok, how about iTunes reciepts, can they be used to verify when it was downloaded as the user has to register their app with the server within say 5 hours of them downloading it.
thanks in advance
I'm assuming your goal here is to disable part of the functionality of your app by having a master list of bogus serial numbers somewhere. Unfortunately there is no per-copy serial number available, and if there were it would be the first thing the bad guys would change before posting your app for download.
Instead you'll need to detect whether your app bundle has been tampered with from within the app. See this question:
Reducing piracy of iPhone applications
You'll then need to decide how subtly or obviously you want to limit functionality. Probably the best solution would be to do something innocuous but slightly annoying that generates a specific kind of support request, at which point you can gently prod the deadbeat into considering buying a legit copy.
An approach with more false positives but potentially fewer false negatives would be to check if the app is running on a jailbroken device. The downside there is that jailbreakers may well have legitimately purchased your app, so you're alienating honest customers for little to no extra benefit.
For the app I'm working on, which has a big social/viral aspect (I hope), I've decided that potential deadbeats probably have enough honest friends to pay for the server cycles that they're stealing, and it's just not worth worrying about.
No, there's no way to do either of these. The closest you could come would be to store device IDs on a central server.