I am using iTunes "lookup" URL for checking available app versions on iTunes store. The URL is in the format - http://itunes.apple.com/lookup?bundleId=. It works fine for apps available for all regions. But my application is only available across France iTunesStore. For that, I need to hardcode country code along with the URL i.e &country=fr.
Is there any way to avoid to do so, because hardcoding the country code will prevent the app to be detected by different region iTunes store if the app becomes scalable in near future.
Related
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
This is the first time I upload an app to apple app store. After weeks for reviewing, finally, I get my app listed on apple app store. But the problem is, now seems like my app app-store page is only viewable from iTunes. When I try to open it in a browser, it will shows "Connecting to the iTunes Store...". Why is it my app can't be the view from the browser? Why did another app can? How to fix it?
Short answer: It seems, you cannot fully predict the behavior of an app store link for a certain user. You being redirected doesn't mean other people will be redirected right away as well. Your app's country/language availability, users' app store region and language settings, the specificity of the app store link (which has optional components and alternative styles), and the browser cache all seem to have a say.
Added details: After experimenting with this a lot, it seems to me that the behavior of the link (or rather the response from the Apple server to requesting it) depends on the language/country version being requested, my own current country/language defined in iTunes/my app store account, plus some caching issues. So, whether a preview page is shown in the browser, or iTunes is attempted to be opened right away depends on several factors and doesn't always have the same result (for different users). In fact, two consecutive attempts to open the same URL can have different redirect behavior.
I noticed that a full app store link like https://itunes.apple.com/us/app/keynote/id361285480 more likely leads to the preview web page, if the app is available in the language/country referenced ("us" in the example) and there is no prior request cached in which I clicked through to the app in iTunes. If the app isn't available in the referenced location, or any other information is missing in the link for the Apple server to identify a particular language version on the preview website, or there is cached data that makes Apple confident enough to redirect you to iTunes directly (or it's Friday 13th and the moon is right behind the sun by pure chance...) then you may see a redirect instead.
For posting app store links in the likes of Facebook, Apple's app linker seems to produce URLs with the nicest preview snippets (and not: "Connecting to the iTunes store"), when putting in the right country. So, these generated URLs seem to be most complete/specific.
If your app is intended for a specific region, AppStore connect will still give you a URL with .../us/... in it. Changing it to the respective local region seems to fix the problem for me.
For an example,
given URL: https://apps.apple.com/us/app/yourcompany/id123456
If the app is for Norway region, change the URL to: https://apps.apple.com/no/app/yourcompany/id123456
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.
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.
I have an app that is on appStore.However this app gets some of the data from server side from an xml
My app is on different apple stores. However I want to restrict some features to only specific app stores. How can I make the application to work for different app stores , lets say make the app read different xml for different app stores or something like that? Is that possible? Or maybe Any place inside app where my app can read the store Type e.g find out if its USA Store or Japanese store or Etc.
An easy way of doing this would be to have a input parameter in your API call which the application can request which country it's from, and then deliver your refined results based on that. Then, launch multiple apps in iTunes connect where each one specifies which country it is in the API request, and only allow it to be downloaded from that country.
For example, if you had two applications:
MY APP (UK) - API call: http://example.org/api/uk/request.xml
MY APP (USA) - API call: http://example.org/api/usa/request.xml
Note: The country you set in iTunes connect is the app store registered to the users account and not based on what country they are actually in!
Alternatively, you could use a online service to determine the location based on their IP. I haven't done this but a quick search finds:
http://www.makebetterthings.com/iphone/how-to-find-ip-address-of-iphone/
http://www.geobytes.com/iplocator.htm?getlocation
i think in you developer account in the app setting you can choose to which stores to upload, or do you mean like having different content for some stores?
Actually you can do it in two ways:
1- build a different binary for each country
or
2 - find an API that let's you know what is the reference store for an user
About this second option, a quick search in the Apple documentation didn't return me a specific API to do this.
Sure, basing on the Locale is not good (what if the user changes the language settings?)
The only way I found is to use SKProduct class. It has a priceLocale property that returns an NSLocale instance. So if you do:
mySKProduct.priceLocale.localeIdentifier
you'll have a NSString with the locale associated to the reference AppStore. (in my tests: it_IT#currency=EUR ).
I tried it in a project with in app purchase enabled, I think that you must setup a real SKProduct to make it work properly
Regards
Fabio