Is it possible to get the icon file of an app (on NOT-jailbroken devices)?
Could URL schemes be used to do this? Is there an API to get the icon or the only way to obtain the image is by downloading it from iTunes?
iOS apps run in Sandbox mode, which means that you can't access it's information, including icons.
If you need icons, you may get it from iTunes preview page, but you will face many other problems to get it done as, for example, how you will get the list of installed apps and it's id's on iTunes.
Related
Updated on 2015-11-1:
One solution I am trying is to start App Store using Applium, so that I can record/monitor iOS UI elements. just like what we did Selenium.
Let's treat App Store as a standard iOS app, is it possible to:
uninstall App Store from my iphone.
get the ipa file of App Store
unzip the ipa file and get the app bundle
run Appium with App Store's app file
Is it possible to get App Store 's ipa file?
======
I want to know the position of my apps when I search on the App Store. When I use the iTunes Search API. I notice the result returned from the iTunes search API for a specific search term are different from the result on the iOS App Store app.
I found This Question is also about this, the owner of that has find out the reason about this condition.
But there is no answer to solve this problem.
Actually I've been trying to build the search request, but it cames that the iOS Appstore is using the HTTPs request, so I don't know what to do with this.
Hope someone can help, I'll be very appreciate.
There is at this time no way to specify that you want the results you would get from an iOS device.
The most obvious solution that comes to mind is to build a search request that appears as I it came from ios in your app code.
I'm sure its possible to determine that by basically proxying an actual iPhone using say your router on your home network to log the traffic from an iphone.
Once you have that you can then basically reverse engineer the call in your app code.
As you can refer from Apple's guidance: Search API, there are too many ways of parameter combination.(Parameters includes:term, country, media, entity, attribute, callback, limit, lang, version, explicit, etc.) So it's almost impossible to find out the way of combination that App Store is adapting so as to get the same search results as users get directly from App Store.
You might want to see if you can get this to work:
In Mac OS X:
Launch iTunes
Under Library menu, click on [Apps] menu.
The iTunes will display all installed app
Right-click on one of those apps
Then click “Show in Finder” option
An alternative to this is simply open the directory of .ipa files stored by using this path: User/Music/iTunes/Mobile Applications
This probably only works with apps you downloaded, but it is worth trying.
It's possible to listen in on https connections by installing a trusted ssl certificate on the device and running traffic through a proxy - basically performing a man-in-the-middle attack on yourself. I've previously used Charles Proxy to do this - here's the guide how to set this up. That way you should be able to see exactly what request the App Store app is sending and what response it is getting. And thus it should also be possible to spoof this request and parse the results elsewhere.
I am trying to accomplish the following:
Check to see if an app is installed on the device
Show user details of the app such as description, rating etc.
If it is installed, give user an option to launch it. Else give an option to download it.
Something like the image below. I see many apps showing this standard looking UI. I am not sure if it is provided by the platform.
I looked at how to programmatically detect and launch app using known URI schemes. But I don't see anywhere how to get the description, rating, get the download URL for the app.
Thanks.
How can i get a list of all my iphone apps (even pointers for each app will be helpful)?
I'm developing an app which contain some screen that should have a list of all my installed apps (with their icon) and the option to select one to launch it in the future depends in other function of mine.
Thanks alot!
There's no way to accomplish this, because each app is sandboxed.
You would be able to determine if select apps are installed if they have custom URL schemes. For example, the Facebook app can be launched with the custom url scheme "fb://", but these aren't guaranteed to be unique, so a different app could use a scheme that's well known to belong to another app. Also not all apps have a custom URL scheme, and you would need some master list (that would need to be constantly updated to be accurate) to check for the presence of each. So you could maybe detect a select list of well-known apps with custom URL schemes, but never get a list of all of them.
If you just wanted to detect your own apps, you could have custom URL schemes that are almost certainly going to be unique set for each app, and check for those.
You could also jailbreak your device, but I'm assuming you want this functionality in an app that is distributed on the app store, so you wouldn't be able to add functionality that requires a jailbreak to work.
EDIT:
Here's an example showing detection of the Facebook app being installed:
if ([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:#"fb://"]])
{
// Handle the Facebook app being installed
}
Note however, this won't give you any information about the app. Any app developer could add the "fb://" custom url scheme to their app, which would make this falsely detect it.
If you want to find lists of custom url schemes for iOS apps, just search in Google.
another way to look at this is to present the user with all of your app in the appstore. If they have any apps installed on their device then in iOS 7 they will see a button called "Open" next to each of them.
For example you can have a UITableViewCell or a UIButton that says "Checkout Our Apps". In the code you would add this.
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:#"itms://itunes.com/apps/sixaxisllc"]];
Replace SixAxis LLC with your iTunes developer name and when users click on it, it will launch AppStore app with only your apps are shown. (With Open or price amount next to each of them)
NOTE: test this on actual device and not in simulator
Because of the Sandboxed environment, all you can do is test if it you can open a custom URL.
Akosma Software maintains a list of popular Url on his wiki: IPhone URL Schemes.
In my app , I am using iCloud features.
However when i go to settings > iCloud > Manage Storage , my app icon is only show white.
I have already added iCon-Small and all #2x into my project and also I tried delete my app from my iPad and run again. That's showing only white iCon like the following pic.
How can I do it?
If your app is not live then you cant seen application icon in settings.
I have this in a long-standing live app (so not in initial development) - the same white generic icon as you're seeing, and also the bundle name is used, rather than the bundle display name which is subtly different in my case. It's not just you and me, Pixelmator also appears the same on my devices - and it's bundle name also looks to be slightly off from the display name as well.
I suspect however this is a cached server side thing in iCloud. I have many apps listed that I've never installed on certain devices, including OS X apps on my iOS devices - so this is something that is probably uploaded to iCloud when your app update is processed by Apple.
This problem started for me sometime after I implemented Asset Catalogs for storing my app icons, and looking in my Info.plist, I can see I still have some of the old icon keys referenced, though the icon file references themselves have been removed from the plist. I'm wondering if this slight misconfiguration led to iTunes Connect incorrectly processing my binary and failing to extract the image from the asset catalog. However, I don't see how this would lead to the wrong bundle name being applied, unless this is just what the iCloud settings screen does.
I'll update this if the next update fixes it. It could even just be a sporadic error or bug on Apple's end.
How does AppWatch feature in DatamanPro show the icon of the installed apps?
The dataman shows icons of the app that have used data in the certain interval. I believe using sysctl its able to figure out which process is using data, but how does it get the app icon?
I originally believed that its getting the icon from iTunes AppStore search url, but I found out that it does get icon for non-app store apps as well, which means that it is somehow getting that app icon locally from the iOS.