Other iOS application version numbers - ios

I have been looking around and I think the answer is 'not possible', however, I need a way for my app to check and display the version numbers of other apps on the same device. I know the names of the other apps (my apps) and I don't need to do anything to them, I just need to display the version number. This needs to be done without jailbreaking

You can only share data between apps of the same developer account , so if the other apps are yours also , you can create an app group between them then easily read the version number from the suite defaults , or you can make server-side and read them with an api request

Related

how to identify an unique id in ios device?

how to identify a unique id in ios device? if I have multiple app with different developer account on same device. How to detect both apps is on the same device?
Example: How to identify Apps A and Apps B is installed on the same device.
different bundle id
build with different developer account
on the same device
iOS 9 and above
Beside a unique id to identify device, any others solution for it?
If you try to make unique ID for each App-device , I think you can make a unique ID by generate MD5 from your bundle ID combined with UDID
But if you wanna detect if App A installed from App B, you can use URL scheme:
Read More here
Or you can read this: Different ways to share data between apps — iOS
How to identify bundleid of any production ios app without installer file
https://www.linkedin.com/pulse/identifying-bundleid-any-production-app-without-ipaapp-buyankar
Go to https://www.apple.com/ios/app-store/
Search for required App Eg: Salesforce App , it will provide the app id in the URL
https://apps.apple.com/in/app/salesforce/id**404249815**
Look up with app id will give us the Json will entire details of the app. Just replace the id in the below URL
https://itunes.apple.com/lookup?**id=404249815**
Eg : JSON response of Salesforce App
{"averageUserRatingForCurrentVersion":4.70164000000000026346924641984514892101287841796875, "userRatingCountForCurrentVersion":184073, "averageUserRating":4.70164000000000026346924641984514892101287841796875, "trackViewUrl":"https://apps.apple.com/us/app/salesforce/id404249815?uo=4", "trackContentRating":"4+", "trackId":404249815, "trackName":"Salesforce", "releaseDate":"2010-11-22T08:00:00Z", "genreIds":["6000", "6005"], "formattedPrice":"Free", "primaryGenreName":"Business", "isVppDeviceBasedLicensingEnabled":true, "minimumOsVersion":"12.0", "sellerName":"salesforce.com", "currentVersionReleaseDate":"2020-05-11T17:59:28Z", "releaseNotes":"We update the Salesforce mobile app regularly to make it faster and more stable for you.\n\nThis version includes bug fixes and performance improvements.", "primaryGenreId":6000, "currency":"USD", "version":"224.060", "wrapperType":"software", "artistId":281826149, "artistName":"salesforce.com", "genres":["Business", "Social Networking"], "price":0.00, "description":"The new Salesforce mobile app is here! \n \nRun your business from your phone -- faster, easier, and with AI as your sidekick. The Salesforce mobile app unlocks a whole new level of productivity, personalization, and speed.\n \nMake smart decisions with AI \nTake immediate action with intelligent views and insights into your business, powered by Einstein Analytics. Get the information you need exactly when you need it to make informed decisions from anywhere.\n \nBuild mobile experiences faster\nWith Lightning now available on mobile, building custom mobile apps is faster and easier—with clicks, not code. Mobile-optimized lightning components? Check. Dynamic and rich mobile record pages? Check. Now anyone can build amazing mobile apps fast.\n \nAccess your entire business\nThe full power of Salesforce is now available from your device. The Salesforce mobile app now includes all your favorite Lightning Apps. And the new navigation bar makes it easier than ever to get to the apps you use most.\n \nWhether you're in the office, on an airplane, or checking in from a coffee shop, the new Salesforce mobile app is your key to productivity.", **"bundleId":"com.salesforce.chatter"**, "userRatingCount":184073}]}
#iOS #mobileautomation #bundleid

How can I get identification string look like IMEI in IOS

My project have a case: one account user can only log on to one device ( if user log on to app in device A, user can't log on to app in device B). My Idea is: when user login, I'll get the imei Iphone (like android) and send it with request login to server. But I can't get imei. I try with UUID, but UUID will change when re install app. Keychain does not solve the problem. Please help me.
You have to use Keychain to store Unique Id , this will not change even if user delete app
You can use any wrapper Source code to do this
here is an example
https://github.com/Joe0708/KeychainUUID
At the beginning I'd like to mention that I do not know any method that directly answers your question, especially that Apple does not allow you to read IMEI and other similar stuff due to privacy concerns. This has been answered here.
The workaround might be as follows
Take a look at the UIDevice class, especially at the identifierForVendorProperty which provides you (according to documentation ) with a device specific value.
The value of this property is the same for apps that come from the same vendor running on the same device. A different value is returned for apps on the same device that come from different vendors, and for apps on different devices regardless of vendor.
As far as i know some financial apps are secured this way to permit only one device to access the account. This however requires registering a device each time application is reinstalled.
Alternatively you can use UUID you generate within your app (first run) and then you assign it for the user online. It might take the form similar to two step verification process. Be aware however that with such restrictions user will have to be online all the time to use your app.

How to fetch the list of near by wifi networks and able to connect to them from our App in ios (Using private API for enterprise App)?

I want to fetch the list of near by wifi networks and able to connect to them from our App in ios, and my Application is Enterprise App so even private api's is also fine. Stuck this issue since 2 weeks, please provide me some references..
What you require will only work on JailBroken devices, the blog(blog.guvenergokce.com/iphone-wireless-scanner-ios5/170) which #Ckouta referred also has one comment from the Blog Admin,
I’m assuming that your device is already jailbroken (otherwise not possible)
You shall create release build of sample app and upload release build in to /Applications folder.
(you can use open ssh for that )
Public API allows you to have only information about the current wifi used by your device using CNCopyCurrentNetworkInfo
In order to fetch all the wifi available in your area, take a look at: Stumbler which is using MobileApple80211. I think, it handles what you are looking for. Moreover, you can also use it to connect your device to a specific wifi. You can find a good example of what you need here (answer #9)
Just keep in mind, if you are using private API, your app will be rejected by Apple.
Although it's late but have a look at this link. You can do what you want with the use of MobileWifi.framework and thanks to Cykey there are some reversed headers to use. I have done what you want myself using the link above:)

Programmatically identify if an app is paid or free

I would like to identify whether an app is paid or free; programmatically, at runtime.
To brief on the context I'm working on, I'm developing an SDK which can be used by various third-party apps. I would like to identify if the app that is using my SDK is paid or free.
Any suggestions to find this?
You should make them configure your SDK writing their app id somewhere, and then your SDK have to check the app store webservices like this
https://itunes.apple.com/lookup?id=theAppID
There you can check the price
One thing you can do is this
https://itunes.apple.com/lookup?id=YOUR_APP_ID
and then fetch price & currency values from the returned JSON
There is a way tick into my mind,
Add a logic to get application name which using your SDKalso add some logic to send that name to you via API or any other way you preferred.
Once you get a new name in your server database, you can, open AppStore in iTunes, and search for the application there, and yes you'll get to know whether they are paid or free!
I know its tough if your SDKwill be going to fly with many apps, but not hard.
An alternate way, if there's some way that you get to know whether app is paid or free, then, you can do the same thing, send app name, and its price details.

CFUUIDCreate, iOS version usage statistics and User Permission

I'm considering using the CFUUIDCreate API to build a database in my server to measure what percentage of users of each of my apps are running which version of iOS (to help me make a decision on iOS minimum supported version for future development).
My question is: Should I ask the user for permission to send the (anonymous) UUID / iOS version data pair to my server, or is it OK to do it automatically?
I ask because I could bet on the safe side and ask anyway, but most users would feel intimidated by the technical details and most likely decline. Also, the longer the text in an UIAlertView, the more likely the user won't read it.
Will Apple reject my app if I don't ask? Even if they don't, do you think I should always ask the user for permission to send this anonymous data?
What's everyone's experience implementing this kind of functionality?
OK, this is what I'm going to do, based on Nikolai Ruhe's answer but improving on a pitfall I just discovered.
Suppose user John Doe installed my app on his iPhone running iOS 5.0.
On the first launch, the app sends an anonymous request to my server that effectively increases by one the counter for 'Devices running iOS 5.0'. The app records this event and the iOS version (in User Defaults or Keychain) and does not send any further requests as long as the locally stored OS version string and the current one (returned by the system) are equal.
The next week, John upgrades to iOS 5.1 and launches my app. The app detects the OS version discrepancy and sends a new request to my server.
But if this only adds one device to the 'iOS 5.1' population, John's iPhone is now being counted twice: once as "Devices running 5.0" and once as "Devices running 5.1".
So to fix this, my HTTP request should look like this:
http://myserver.com/my_stats_scripts/index.php?app_id=com.myCompany.myApp&new_os_ver=5.1&old_os_ver=5.0
So my database can increase the number of 5.1 devices and decrease the number of 5.0 devices by one.
Of course, on the first request, the HTTP parameter old_os_ver is set to empty, and the server treats it like a new device.
If I pull this right, I no longer need UUIDs. But I am still sending system info covertly to my server. I think I'll also disclose this on the Terms of Use.
You should definitely ask for permission. The crucial bit here is that your data collecting might be anonymous, yet it can be used it to track individual users.
Web browsers send a user-agent string with every request. The difference is that they do not send a universally trackable id that would never change.
So the problematic piece in your proposal is the UUID. Why not just leaving it out? Your app would send an anonymous request once and locally store the transmitted iOS version. When the user upgrades the OS, you send another request with the new iOS version and an update count.
Using this scheme you would not transmit trackable data and still get a proper usage-by-os statistic.

Resources