After going a lot of places setting up my bundle id, now I get :
An App ID with Identifier 'com.myapp.estate' is not available.
Please enter a different string.
com.myapp.estate is just an example here mine is a lot more unique, so how do I check if a selected bundle id on iOS is free before going through all these setups again?
For android we can look for https://play.google.com/store/apps/details?id=com.myapp.estate if it says it doesn't exist it means it's free.
Related
At what point in the iOS development process using Xcode is my app name reserved on App Store? (There are no updated answers to this question in any posts at stackoverflow.) Last I remember when I published my iOS app for sale status on iOS App Store at App Store Connect I had to change my published app name because there were already other apps using that name. I think that was the name that was actually showing on the App Store, and not the name I put in the Product Name field when I first create the project in Xcode.
I just tried to validate my iOS app and it wouldn't validate because it said there was already an app with that "App Name". I take it that means the name I put in the Product Name field when I first created the project, if I don't change it later. Is that correct?
So if my iOS app project validates, does that mean I have that App Name reserved so that no one else can use it?
How do I reserve a name for my iOS app so that no one else will get it once I reserve it?
As someone said in the comments, simply create a new app in App Store Connect with the name you have in mind, then no-one else can use it. You don't have to send it to Apple immediately after you do this, you can wait however long you need to until it's ready.
Just make sure the bundle identifier is the same between the two.
In order to change the bundle ID of an app in App Store Connect, there cannot be any previously-uploaded builds; if there are, the bundle ID cannot be edited. Therefore, to change the bundle ID (and subsequently remove an app's build history from App Store Connect), would one have to remove the app from App Store Connect and reclaim it? When an app is removed this way, the app's name is released to other developers, but is that immediate? And would anything prevent me from creating a new app with the same name right after I removed it from App Store Connect? The app is still in the prepare-for-submission phase.
I've gone through this process to hand an app over to another developer - we didn't care about losing the build history, so this is faster than transferring it.
would one have to remove the app from App Store Connect and reclaim
it?
I believe that is the case, although you probably could rename the original rather than deleting it.
When an app is removed this way, the app's name is released to other
developers, but is that immediate? And would anything prevent me from creating a new app with the same name right after I removed it from App Store Connect?
In my case, the other developer was able to use the name within an hour. Nothing should prevent you from re-using the name, as long as no other developer grabs it before you do.
In your case, I would try to register the name with the new bundle ID right away, and just re-try ever couple of minutes until you get it back. I wouldn't be surprised if it takes a little time to get all of Apple's systems updated.
Please let us know the result!
Nothing from Apple explicitly said I couldn't do this but developer support said there is no guarantee it'll work, and not just because another developer may quickly take it, but for "a lot of other reasons" (according to support); the system was designed against this kind of behavior, I was more or less told. TLDR: not trying it. 😏
I'm working on an update for one of my games. I had a version that I downloaded from the app store on my device, and I pressed Run in xcode... The app got updated, but I had a little scare when I noticed that the game's stats all disappeared.
Now, after looking over my code, my only theory that makes any sense is that identifierForVendor is different. I use this as part of the key to encrypt my game's data (to make it impossible to just copy data between users). If it changes, it makes perfect sense that the data is lost.
So before submitting my update, I wanted to verify that this is the case - does identifierForVendor change between development versions and distribution versions?
Thanks!
Found the answer - in the documentation, of all places :)
https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIDevice_Class/index.html#//apple_ref/occ/instp/UIDevice/identifierForVendor
Normally, the vendor is determined by data provided by the App Store. If the app was not installed from the app store (such as enterprise apps and apps still in development), then a vendor identifier is calculated based on the app’s bundle ID. The bundle ID is assumed to be in reverse-DNS format.
So the answer is "yes".
Before Swift 2.2 the UUID value was the same every time I opened the app, now changes at every opening
I use this code:
UIDevice.currentDevice().identifierForVendor!.UUIDString
How can I do now to identify the user?
Every time you delete the app, the UUID may change.
If you just close and open the app, it's should be the same.
But if you delete the app (or install it again via xcode), it might change.
There are a couple of answers that explain why the UUID is resetting. There's one that offers a potential work around, but I'd consider it far from ideal. But I want to highlight something important about the way UUID's work that serves as a great workaround that has absolutely zero impact on the production OR debug version of your code base or compiled binary.
The value in this property remains the same while the app (or another app from the same vendor) is installed on the iOS device. The value changes when the user deletes all of that vendor’s apps from the device and subsequently reinstalls one or more of them.
All you have to do to prevent this value from changing while developing App-A is to simply install App-B from the same vendor (yourself) and keep it installed during the life time of App-A's development. This is literally as simple as starting a blank new iOS project and install the blank slate to your test device (using the same developer account & such), and then never uninstall it again during development.
App-B keeps a constant UUID for the vendor (yourself) so no matter how many times you delete and reinstall App-A, it will always keep the same UUID.
This actually seems to be a bug IMO. Everytime I run my app in the simulator it generates a new Vendor ID. You can probably get round it by storing the ID into NSUserDefaults on the first bootup then retrieving / comparing the value from NSUserDefaults instead of getting it from identifierForVendor. This will save a static vendor id in defaults but in theory the vendor id will still be changing every boot up.
Kind Regards,
Krivvenz.
Update: I can confirm I have installed multiple apps on the same simulator too but the vendor ID is still changing on every boot.
Update 2: - I have logged this as a bug with Apple - 26195931.
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.
The value in this property remains the same while the app (or another
app from the same vendor) is installed on the iOS device. The value
changes when the user deletes all of that vendor’s apps from the
device and subsequently reinstalls one or more of them. The value can
also change when installing test builds using Xcode or when installing
an app on a device using ad-hoc distribution. Therefore, if your app
stores the value of this property anywhere, you should gracefully
handle situations where the identifier changes.
Refer this link for more info.
I already have an app on the Appstore, let's say it's called 'MyApp', and I'm currently now creating a free/lite version called 'MyApp Free'.
MyApp Free will have an in-app upgrade purchase option, which will make it fully functional like MyApp.
The problem is, because we can't dynamically change the bundle display name, it will be continued to be called 'MyApp Free', with the icon on the users device, after a user has upgraded it. which is undesirable.
So can I get away with setting the bundle display name to just be MyApp, even though it's called MyApp Free on the Appstore. Also consider that I already have an app out there called MyApp.
I've searched lots of posts but need clarity on whether Apple will let me get away with leaving out the 'Free' bit for the display name.
Yes it's possible.
Apple don't really care so much with the Bindle Display Name. I have exactly the same setup as yours and it's on the AppStore. (Both of my apps' Bundle display name is MyApp even one's Bundle ID is MyApp and the other's is MyAppLite, with the same upgrade path possibility with in-app purchase from Lite to Full)
WARNING!
BUT BE CAREFUL not to change the product name in the Build Settings!!! Just change the Bundle display name in the plist file deleting ${PRODUCT_NAME} to the desired new Bundle display name. If you accidentally change the product name this could change the Bundle Name too as this use the same ${PRODUCT_NAME} by default.
If you don't care enough this will cause that the users couldn't upgrade as the app name in their devices will be different! This could cause a confused situation on the AppStore as there will be users with different app name as the new users meantime download your new app with the new Bundle/App name so you have to make a painful decision with the new upgrade which user groups do you like to support as both is not possible.