Unable to create dedicated App ID for Watch Extention - ios

I'm having trouble creating a dedication AppId to my watch extension.
So far my app and corresponding watch app worked perfectly. I had my App ID configured using a bundle id similar to the following format: xx.yyyyy.appName, and the watchkit app & extension were using a wildcard appId with the relevant (and suggested) bundle id of xx.yyyyy.appName.watchkitextension and xx.yyyyy.appName.watchkitapp and everything was great.
I found out I need to change the current behaviour of my apple watch app to share some data with the parent app, and in order to do it I had to enable the App Groups capabilities, where I found I'm not able to do so for the watchkitextension (apparently App Group capabilities required Explicit App ID rather then wildcard App ID).
Realising I don't have a dedicated App ID I went to the member centre and tried to make one unsuccessfully. Following Apple's guidelines I'm trying to create the App ID with the same prefix of xx.yyyyy.appName following .watchkitextension.
This results in the following error message:
An App ID with Identifier 'xx.yyyyy.appName.watchkitextension' is not available. Please enter a different string.
No matter what string I input I get the same error. I made sure I don't have other AppId with similar bundleId associated with it. I even deleted the wildcard App ID to make sure the asterisk (*) in the last digit in the Bundle ID field of it isn't confusing things. No luck -> it became even worst. I can't recreate the wildcard App ID I had before (getting the same error)
UPDATE:
I found out changing the first part of the string (the xx part) to something different allows me to create the AppID - but unfortunately it doesn't solve my problem as I need it to have an identical prefix for the bundle id of the watch extension. I thought maybe this info will be helpful to whoever try to assist.
UPDATE2
I've read the following stackoverflow posts, one, two, three and many others. No luck :(
I'm feeling a bit lost here, any help would be much appreciated!

For example you have app with identifier 'xx.yyyyy.appName'
Watch App:
Your Watch App must be prefixed with the identifier ( 'xx.yyyyy.appName.watchkit')
WKCompanionAppBundleIdentifier - 'xx.yyyyy.appName'
Watchkit Extension
Watchkit Extension must be prefixed with the identifier ('xx.yyyyy.appName.watchkit.extension')
The WKAppBundleIdentifier identifier must match with the WatchKit app bundle identifier ( 'xx.yyyyy.appName.watchkit')

Related

Wrong application name in PUSH NOTIFICATIONS | ios SWIFT

so i was changing the details of an already built ios app and i have changed all the strings etc to change the name of the app, but when the applications gives notification(apple push notifications), it still shows the old app name not the new one. I have also changed the bundle display and bundle package name to the new app name but still not luck. I also tried cleaning build folder and restarting both my mac and the phone.
In the notification, it displays new name and old name as well, this is very weird.
Please refer to the image below.
Comments from the people above are correct. The Bolt data is from your server. The same with your content. So talk to your server/backend guy or do it your self. Also there's a way to somehow handle that.
You can catch the title, the content, and the image (for rich push notification) by adding Notification Content Extension and Notification Service Extension in your project. That would require a bit of work though. I hope this helps!
Hey I got the answer from apple developer page. Just follow these options:-
Select your Targets
Select your Building Settings
Check the Packaging.
Then check what is the Product Name?
In my case Product Name is the old one.
If still you receive the Old name. So for that case delete the application and install the app now you will receive the New name for the application. No need to right the Notification Content Extension and Notification Service Extension for Push notifications.
For changing app name set CFBundleDisplayName value in info.plist file:
CFBundleDisplayName
New app name here
Name specified in this way would be displayed on device under the app icon.
Push notification service depends on app bundle id CFBundleIdentifier.

How to Bundle Name Vs Bundle Display Name Vs AppStoreConnect App Name

I have little bit confusion about name pick when I submitting my App to AppStore..
I have Bundle Display Name in Xcode has KruchConnect but when I put same name in AppStoreConnect it saying that this App name is already taken ..
If I go with DKruchConnect it is taking the name but I have a Question Here if somebody download from App Store I want to show KruchConnect still Under App intead of DKruchConnect Is it possible ?
Answering my own Question ...
I read some where there is way If I put Bundle Name in info.plist file as KruchConnect it will display that name under App once i download from AppStore is it correct ? If it is what happens that same already exits for other App too...is it legal ? Please help
To answer your question, yes.
Your App Store Connect name is how people will search and find you on the App Store.
Your Bundle Display Name is what will appear below the app icon on the screen.
To give an example, my application is called Charge Running. It's App Store Connect name is "Charge Running". However, that title is a bit to long for the home screen, so the bundle display name is "Charge".
App Store Connect names need to be unique. Bundle Display names do not need to be unique.

Which app does app ID in /Application folder belong to?

I was able to get bundle identifiers for all apps installed on iOS simulator by going to directory
~/Library/Developer/CoreSimulator/Devices/[DeviceID]/data/Containers/Data/Application/
but how do I know which app the ID belongs to? Are there names? Why are all IDs numerical? Are they randomly generated and different on each sim?
I don't know why it is random number. Why apple use this kind of mechanism, But you can get application bundle identifier by using below step.
Step:1
Goto: ~/Library/Developer/CoreSimulator/Devices/[DeviceID]/data/Containers/Data/Application/
Step:2
Select Any application > Open .com.apple.mobile_container_manager.metadata.plist file.
Step:3
Value for MCMMetadataIdentifier is identifier for your application you can also see in below screenshot.
Short answer: just parse hidden file for bundle id ...
~/Library/Developer/CoreSimulator/Devices/< device id >/data/Containers/Data/Application/< app id >/.com.apple.mobile_container_manager.metadata.plist
Why are all IDs numerical? Are they randomly generated and different on each sim?
I believe they’re different on every device, and that the idea is to make it more difficult for malware to figure out whether and where a given app is on the device.

Prefixing iOS shared App Group with TeamId

tl;dr Does anyone prefix their shared App Group name with their TeamId?
We use an App Group for sharing data between our app and extension, and with another app of ours. I've been passing the suite name as "group.com.example" to NSUserDefaults -initWithSuiteName and NSFileManager -containerURLForSecurityApplicationGroupIdentifier and it's been working fine.
With iOS 10 I'm seeing an Xcode console error when starting my app:
[User Defaults] Failed to read values in CFPrefsPlistSource.
Using kCFPreferencesAnyUser with a container is only allowed for System Containers,
detaching from cfprefsd
A known solution is to prefix our TeamId to the group, but we already have an app out there using the non-prefixed variant, so changing it in this new app will cause compatibility issues. Other than this msg on startup there's no discernible problem.
Here's what makes me wary: We shipped a similar Mac app a few months ago and were hit with an App Store validation error that forced us to use the TeamID on the Mac:
Invalid Code Signing Entitlements. Your application bundle's signature
contains code signing entitlements that are not supported on Mac OS X.
Specifically, value '[group.com.example]' for key
'com.apple.security.application-groups' is not supported. This value
should be a string or an array of strings, each starting with
your TEAMID followed by a dot '.' .
Apple's docs and sample code don't mention the TeamID prefix at all, and my hunch is this isn't a change they'd be able to make without breaking a huge number of apps out there, but if this is a direction Apple is moving I'd rather deal with it now than later.
Does anyone have any authoritative knowledge about using the TeamID prefix or not on iOS? Anyone run into problems using it, or not?

Bundle Identifier: setup for new project with IOS App+Framework+Today Extension

I'm in the process of starting to develop an IOS/Swift App with a Framework to share common logic with a Today Widget and I have some questions about the Bundle Identifier:
If I choose something as org.whateverIwant.TestBundleID for the App, should whateverIwant.org really exist or is it simply a unique identifier?
If I later add an a Cocoa Touch custom Framework to the project, it asks me for a Product Name (TestBundleIDFramework) and then it appends by default the product name to org.whateverIwant without TestBundleID. Instead, if I add a Target for a Today Extension it appends the Product Name (TestBundleIDExtension) to org.whateverIwant.TestBundleID. Given the fact that all the three parts (App, Today Extension and Framework) are part of the same app that I'll upload to the store, is this way of using BundleIDs correct? Should also the Framework be under org.whateverIwant.TestBundleID, such as org.whateverIwant.TestBundleID.TestBundleIDFramework as for the Today Extension?
Is it extremely important to chose the right Bundle ID at the beginning of the project (consider that I still have no developer account, I'll pay for it as soon as I see that I'm able to build the app I'd like to) or can it be changed without hassle later on?
An brief OT question: there is a Version field for each target, what is the one that Apple looks at when determining if the uploaded bundle (App+Extension+Framework) has been updated to a new version?
No. It is simply an unique indentifier.
You mentioned three: "App+Extension+Framework" I think only the App's bundle ID matters because you are going to submit the App. The Extension and Framework are just part of the App, theirs bundle IDs are internal which means nothing to App store.
You can change the bundle ID as long as you haven't submitted your App to App Store.
OT Question: App Store only cares about your App's bundle ID and version number.

Resources