Dynamically change iphone app icon and loading image - iphone

I would like to update the application icon and the splash (loading) screen of my app dynamically if possible, by storing the data in SQLite fetched from a webservice
I pretty sure the answer is going to be no but thought I'd get confirmation
Thanks

You can change the Default.png file by putting a symlink in your app bundle:
http://collison.ie/blog/2008/11/dynamic-defaultpng-files-on-the-iphone
The same technique might work for the Icon.png, but I doubt it, and if you could get it to work I imagine you'd have to HUP the SpringBoard (which you can't do on a non-jailbroken device).
It looks like Apple has removed the ability to set a badge for your app other than through push notifications (which in that case can only be a number according to the docs).
EDIT: This hole was closed in 3.0:
Dynamic (Default.png) splashscreen in 3.0 [iPhone SDK]

Related

iPhone 5 Optimization Requirement - Launch image really necessary?

When trying to upload a binary to App Store, I get the following response in an email:
"iPhone 5 Optimization Requirement - Your binary is not optimized for iPhone 5. As of May 1, all new iPhone apps and app updates submitted must support the 4-inch display on iPhone 5. All apps must include a launch image of the appropriate size. Learn more about iPhone 5 support by reviewing the iOS Human Interface Guidelines."
Also, the status of the app is "Illegal binary".
I've read that I must include a launch image called "Default-568h#2x.png". Question is: My app was not intending to have a launch image at all. Am I really required to have a launch image now?
Yes you must include one. Not only does the launch image give the hint to the OS about the app's iPhone 5 (4" screen) support, but launch images in general are required:
From Apple's Interface Guidelines
To enhance the user’s experience at app launch, you must provide at least one launch image. A launch image looks very similar to the first screen your app displays. iOS displays this image instantly when the user starts your app and until the app is fully ready to use. As soon as your app is ready for use, your app displays its first screen, replacing the launch placeholder image.
Furthermore:
Generally, design a launch image that is identical to the first screen of the app.
So really, making a launch image that is about the same as the first screen of your app (e.g. if the first screen is a UITableViewController with a toolbar and navigation bar, perhaps the screen looks like an empty navigation bar, an empty toolbar, and an empty table view, which then suddenly all become populated as soon as your app really gets going), is the way to go for the best user experience.
If really you don't want or need this, then make the default images just be black.
Yes, as stated, as of May 1, 2013, all new apps and app updates must provide support for the new iPhone 5 4-inch display.
The way to indicate that your app supports (has been tested with) the new iPhone 5 resolution is to simply include the launch image for that device.
You can simply create a black .png image (which is what your other default launch images are anyway) that is 640 x 1136 pixels and use that as the launch image for that device.
Simply including the new splash screen image (Default-568h#2x.png) is not enough
You must re-build your project with the iOS 6.0 SDK (or newer) - which supports iPhone 5
So if you're still using an older SDK, update your XCode in the App Store first
Yes. from 1st May, you can't upload application with out including Default-568h#2x.png in your application.

iOS Delete Button - Objective C

I was wondering where does one get access to iOS delete button. This is the button that Apple uses to close the iAd window, and for deleting iPhone apps from the home screen, and also the Twitter App uses it to delete the photo that you add to a tweet. Do they just download this image somewhere or is there an option for it somewhere like for the info button, and the detail disclosure.
Thanks
I also found that Growl uses this icon along with Lion's Mission Control...
You can use UIKit Artwork Extractor to extract about any iOS artwork that is not public. Just search for close and you will find several close button png images.
Apple doesn't make that image available, unfortunately.
This iPad template has the icon you want, though, in a PSD: http://www.teehanlax.com/downloads/ipad-gui-psd/
If it's actually an image and the iOS Simulator displays it, it should be hidden somewhere inside the Simulator frameworks or support files.
What, you mean the circle with an X in it? It's pretty easy to make your own, either in an image editor or just drawing it in code. I can guarantee you that's what the Twitter app did.

iPhone - fast-app switching and iOS 4

I'm trying to get the following functionality in my iPhone app:
When backgrounded, stays running (doesn't have to do any background work)
When resumed, app picks up where it was left off
I'm mainly wanting the same screen on my app still up, as there are several UINavigationControllers within a UITabBarController.
I have done all of the following:
Made sure I'm compiling with 4.1 SDK
Set UIApplicationExitsOnSuspend to false
Handle DidEnterBackground and WillEnterForeground in my AppDelegate
Call BeginBackgroundTask in DidEnterBackground, to attempt to keep my app open
I'm using MonoTouch, but that it probably beside the point. I can take answers in Obj-C, for sure.
I've tested my app on a jailbroken phone with Backgrounder, and I see the "app in background" badge disappear immediately after pushing the home button. I also tried setting UIBackgroundModes in my Info.plist, but to no avail.
Is there anything I'm missing?
Or is this something I would have to implement on my own to resume the previous state of my app? Everywhere I've read talks like it should just work automatically.
If you don't want to be doing work in background, don't call beginBackgroundTask. That call is for situations where you want to do some kind of work in the background. And if you don't finish that work fast enough, iOS will terminate your app.
When I upgraded to iOS 4.x, my MT application started exhibiting this behavior without me having to do anything. iOS should take care of it for you.
I finally got in touch with someone on MonoTouch's irc.
In MonoDevelop there is an option to make a dual iPad/iPhone project, which I used. This is causing my app to behave as if it's running with the 3.2 SDK when deployed to the device.
I think my solution is to install the iOS 4.2 SDK that just came out, since this ads the new multi-tasking feature on iPad.
Not only do you need to support going into the background, you also need to support cases where your app has been terminated. In your app’s initialization code, you should resume the state that it was in. For instance, when you push a view controller, use NSUserDefaults to store a value for the currently-displayed screen, and then when you start read that value and display the associated screen.

Default.png problem with iPhone OS 4?

What should Default.png contain? Currently it seems that iPhone OS makes snapshots of the screen before closing the app, and next time it launches with that exact snapshot as "splash screen image".
A guy here in Russia told me that this is only happening when Multitasking works on the device.
What would I show in Default.png now? I don't want that the app launch sucks for users without multitasking, and I don't want it to suck for users with multitasking where the app had to hardcore-launch anyways (i.e. first launch at all). So what would that contain? A screenshot of the app screen how it looks after a hard launch from scratch? But what if my app is clever and saved state, and the UI looks completely different after launch?
What are you guys putting in Default.png and why?
If fast-app switching is working on the app as part of multi-tasking, you are correct in stating that the OS will take a snapshot and restore your app to this state after it comes out of the background. If the OS is saving state for you, then coming out of the background doesn't "suck" since it brings you app back into view looking just like it did when it left. It's almost like minimizing a window on Mac OSX and then maximizing it again... you just pick up from where you left off before.
Be advised though that the app could get killed at anytime in the background without warning or notifications being sent to you. In that case, you should still save state and try to create a splash screen that works with all of your views (i.e. has a tab bar at the bottom, or a nav bar at the top, etc). If you can't do that, you might consider just doing what Jesse has done with a company or app splash screen (even though Apple doesn't endorse this, but they won't reject you for it either).
As Jesse stated, Apple recommends creating an outline of the main elements to familiarize the user with your app and to give the appearance of faster loading. More information is here
For iPhone splash screens I am still using a company logo splash. for iPad, a basic "outline" of what the screen i am coming into will look like (a splitview basically, depending on orientation). The fact that default.png isn't editable does make this tricky though.

Dynamic (Default.png) splashscreen in 3.0 [iPhone SDK]

I know it's possible to create a dynamically changable Default.png by creating a symbolic link. But that's not possible in iPhone SDK 3.0 anymore (only in 2.0).
How can I make this in 3.0, or is this impossible?
Tim
This worked on iPhone OS 2.0 http://collison.ie/blog/2008/11/dynamic-defaultpng-files-on-the-iphone but not on iPhone OS 3.0 anymore. The default-screen is always black.
I can change the default-screen in the documents-folder and the symbolic-link does link to that file. I tested that by browsing to the app-folder from the Simulator. I saw the right file in the documents-directory and I saw that the symbolic link points to that (the right) file.
It's not possible in 3.0. It was only possible on 2.0 because it was an exploitable bug. The bug was fixed in 3.0 which is why it's not possible.
Apple don't intend the Default.png to be a "splash screen".
If you read the HIG, you'll see that the Default.png is suppose to represent your user interface as it would be "empty" - without any content. It is intended to give the user the illusion of an "near instant" launch.
Check out all of the Apple apps on the iPhone and you'll see how the default.png is meant to be used properly.
Apple frown upon using the Default.png as a splash screen. They say that it is really only appropriate for apps such as games that don't use the standard UI elements that are provided in the SDK.
That being said - lots of apps these days are using this feature to show splash screens, and seems Apple aren't really enforcing this guideline.
Long story short, you can do a splash screen, but it can't be dynamic - not anymore.
Use a blank Default.png and then in your app delegate's -applicationDidFinishLaunching: method, load a UIView that contains your dynamic content. This solution sidesteps any conflicts with Apple's SDK terms as well as all technical problems.