how to identify an unique id in ios device? - ios

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

Related

"Sign in with Apple" web flow - custom icon when having multiple apps

I am implementing Sign in with Apple for a organization having a bunch of apps.
I want to have a single Service Id for all these apps (and group them all under the same group id), in order to have a single app authorization flow (+ a single email per user for all the apps, even if its a private-relay one)
How can I set a custom icon in the web flow + iPhone config?
I already tried using a 'fake' demo app as a primary (as suggested in an Apple forum), with an icon representing my whole organization instead of a specific app
=> but that isn't working, possibly because I only pushed it to Testflight and not the AppStore (again, this is an fake/empty demo app)
Did anyone face and/or was able to work around this issue? Apple doesn't offer extensive documentation for this use case
Here are screenshots to visualize the issue:
Web flow:
iPhone config:

Other iOS application version numbers

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

Opening an app from URL schema

This may sounds crazy but just curious to know how a deep link/ URL schema reaches to an app to open it up in the device. Searched for an article but all contain how to make it work technically which I completely experienced, but could not find one how the handshake works.
If anybody can share if known, much appreciated!
Thanks.
The best information I could find so far on the subject is Wikipedia:
Unlike the Web, where the underlying technology of HTTP and URLs allow
for deep linking by default, enabling deep linking on mobile apps
requires these apps be configured to properly handle a uniform
resource identifier (URI). Just like a URL is an address for a
website, a URI is the address for an app on a mobile device. Examples
of URIs that launch a mobile app:
twitter:// is the iOS URI to launch Twitter’s mobile app
YouTube:// is
the iOS URI to launch YouTube’s mobile app
The format of the URI used
to trigger or deep link an app is often different depending on the
mobile operating system. Android devices work through intents,
BlackBerry 10 devices works through BB10's invocation framework,
Firefox OS devices works through Web Activities, iOS devices works
through the openUrl application method, and Windows Phone 8 devices
works through the UriMapper class.
fb://profile/33138223345 is an example of a mobile deep link. The URI
contains all the information needed to launch directly into a
particular location within an app, in this case the profile with id
'33138223345', i.e. the Wikipedia page, within the Facebook app,
instead of simply launching the Facebook app fb://. eBay's apps
demonstrate the use of different schemes by platform.
eBay://launch?itm=360703170135 is the URI that deep links into eBay’s
iOS app while eBay://item/view?id=360703170135 links into eBay’s
Android app
Basically the URL matching starts at the OS level.
iOS will use the settings in your apps plist file for a whole bunch of other things outside the app. One of them being the deep linking.
You declare your URL scheme in the plist, and whenever the OS encounters a URL matching this scheme (usually when user taps a button or link), it will open your app and pass the URL information on. It's then your responsibility to determine what to do with this information.
Does it jump into a profile page? A particular product? That's all left up to you.

iTunes install tracking

I should be able to track the click to install conversion, with tools like Flurry or Adjust (ie. user clicks on a generated link, and is redirected to my app on the iOS AppStore and I could see, the click and the install).
How does this work, from the technical side. I'am generating a link, where I can obviously track the click very easily, but how do I get the conversion, from click to install? I can redirect the user to the AppStore page, but I would need to provide a ID (or similar) which the AppStore will provide my app, that the respective SDK can track the actual install.
Could you provide me some insight, how this works? Through iTunes Affiliate?
Through Flurry it's really easy if you own the apps:
Flurry SDK must be installed on both the apps (let call them A and B).
On Flurry website goto Company Tab -> "Conversions" -> "Up-Selling" -> "Create New Up-Sell..."
Then add the conversion you are trying to measure for example from A to B (you can also measure B to A separately).
This would make Flurry start measuring this.
For now you cannot measure exactly how many is by your ad at app A or if the user got both apps separately it would still get into that count. The way to measure that is not so complex it's involves Flurry creating a unique ID for the device (they are probably using Advertising ID - IDFA or other unique identifier you can get from the iOS SDK) and if this ID appears on the other app it would count as up sell (if A is before B).
Doing all that on your own without Flurry is too much because you would need servers just for that task. If you are willing to do so just on server side save each user_id (IDFA or other similar) the APP_ID that connected to it (it is pretty easy to get the bundle_id so you could use it or get from the iTunes API the exact APP_ID), then you would have for each device which apps he has that you installed your SDK on. from there you could estimate your conversion rate. On top of that you could register each link press on your server and then have another estimation of clicks from the SDK itself or sending the user to your server with his IDFA (or similar) and APP_ID. To make statistic more valuable you can measure time from the click till the actual running of the advertised app etc.
For now Apple doesn't provide this service themselves. not through iTunes connect or through other systems I know.

Store temporary data outside of iOS app

I have an app that is uniquely branded for each customer (think restaurants, etc.) I need to have the user be able to click on a link to my server that contains a unique code, stores that temporarily on the iOS device (cookie, etc.) and then directs them to the app store to download the app. Then when it is downloaded, the app grabs that cookie or temp. data on launch and brands the app for that customer. I know this is possible on Android, but is it on iOS?
Downloading the app first and then selecting the brand (or restaurant) is not feasible in this case, as the url wil be shared with other customers of the same business and we want to create a fluid experience, where they won't be able to "see behind the scenes" and choose a different branding.
Thanks
Edit
Thank you for all the replies. We've reevaluated and are considering having the url be opened on the device and grabbing the IP address or another unique id, and saving that along with the correct brand to a database. The app will then connect to the database on launch, and if the IP's match, will brand accordingly. We're looking for a more reliable identifier than IP, however. Now that UDID is deprecated, are there any other identifiers we can use?
I think the design you propose of a webserver link creating the code that needs to be read by the iOS app later is the issue. You should have a solution that is entirely app based. Perhaps you can have the same services on the website be available as one app which then sets up the code in pasteboard. The user then launches the actual app that looks at the pasteboard and skins itself accordingly.
That being said, data can be shared between apps from the same app seed ID by using UIPasteboard in addition to a few other ways.
I use the pasteboard to share info between apps quickly and easily using this class.
You can use identifierForVendor (UDID replacement) to identify individual devices. Are you planning on harvesting those identifiers prior to the end user "registering" the device at the final location? If not you'll never be able to determine which device belongs where.
What about having the end-user logging into your server as that restaurant? It can be a somewhat generic login per restaurant like "Wendys/Wendys5?" and "McDonalds/McDonalds7!" to determine their App Store URL. As long as the password is easy and non-programmatic to guess it would be unlikely they figure out how to register as a different restaurant. You could also do a simple restaurant selection screen coupled with a password specific to each chain but this would expose the user to which other restaurants are using the app. This way you won't have to continually add IPs if they expand locations and can revoke credentials if the login is compromised.
One question, though: Do all of your clients understand that they'll have to have an AppleID tied to each device? You can only shared a single AppleID across 20 devices.

Resources