Testing Push Notifications, sharing app internally with coworkers - ios

I've made a very basic app for push notifications using my personal ios developer account. I wanted to share this with a remote coworker but it's proving to be a struggle.
I added his device to my developer account, and I've created a new provisioning profile with his device for my app.
I sent him the certificate, and he ran it on his computer.. and then built the app on his phone. He got this error:
Error Domain=NSCocoaErrorDomain Code=3000 "no valid 'aps-environment' entitlement string found for application" UserInfo=0x17007e880 {NSLocalizedDescription=no valid 'aps-environment' entitlement string found for application}
i had him check Xcode -> Preferences -> Accounts and this is his screen. I think he has an expired developer account, but can somehow still build apps on his phone??
he doesnt want to pay the $99. I'd add him as a developer on my "team" but I have an account as a single developer. What is the easiest way to get this working?

Here is the link that would help you build ipa that you can share with your coworker.
Or submit your build on iTunes connect and share it via test flight.
And one more thing you should keep in mind that as you mentioned that this app supports push notifications, i hope you have placed development or production SSL certificate on server which is necessary to send notifications from serve to device.

Related

Notification Service Extension unable to use Call Extension, profile team id differs from app prefix id

I'm working on an out-sourced application for a company and when a version of it built using ids and provisioning profiles from my Apple account it runs without problems.
However when it is built and run using the company's ids and provisioning profiles I am seeing an issue with it.
What is happening is when a notification service extension uses a call extension then the OS logs the following:
doQueryCallExtensionStatusWithDispatchGroup() COMPLETED WITH ERROR: Error Domain=NSCocoaErrorDomain Code=4099 "The connection to service named com.apple.CallKit.CallDirectory was invalidated: failed at lookup with error 159 - Sandbox restriction." UserInfo=
NSDebugDescription=The connection to service named com.apple.CallKit.CallDirectory was invalidated: failed at lookup with error 159 - Sandbox restriction.
I noticed that in the company's provising profile for the notification service extension the app identier prefix is different from the team identifer. In my own provisioning profile the app identifier prefix and team identifer are the same. Could it be the case that this difference in identifiers within the provisioning profile is leading to the sandbox error message?
Attached is the notification service extension provisioning profle provided to me by the company (converted to a .plist for readability)
I was getting this error with the new WeatherKit service today. It only started appearing once I had pushed the build to Test Flight. Building it on Xcode and on my device yielded no problems.
I looked around, and figured out that I hadn't added the WeatherKit capabilities into my app itself. Once the capabilities had been paired to match my Entitlements and what services I'm registered for on the Developer Portal, the error went away and the app runs as expected on Test Flight.
So if you're seeing this error now, I'd check that your app's capabilities are properly reflecting the services you're using.
Yes, the provisioning profile for the push extension and the app should be for the same app and use the same certificate and from the same team.
You should ask them to export their certificate & private key to you. And then either download the provisioning profiles from their iOS dev center or generate one if you have access to their portal.

Apple Development Xamarin.Forms: ERROR ITMS-90163 When Delivering App to TestFlight

So I created an iOS app in Xamarin.Forms and I want to send it to TestFlight to send for certain people to test. I am using the application Transporter to send the ipa file to TestFlight. The first time I did it, it was successfully sent however in TestFlight it was just hanging on processing forever, I got an email saying:
We identified one or more issues with a recent delivery for your app,
"My App Name" 1.3 (1.3). Please correct the following issues, then
upload again.
with this included:
ITMS-90078: Missing Push Notification Entitlement - Your app appears
to register with the Apple Push Notification service, but the app
signature's entitlements do not include the 'aps-environment'
entitlement. If your app uses the Apple Push Notification service,
make sure your App ID is enabled for Push Notification in the
Provisioning Portal, and resubmit after signing your app with a
Distribution provisioning profile that includes the 'aps-environment'
entitlement. Xcode does not automatically copy the aps-environment
entitlement from provisioning profiles at build time. This behavior is
intentional. To use this entitlement, either enable Push Notifications
in the project editor's Capabilities pane, or manually add the
entitlement to your entitlements file. For more information, see
https://developer.apple.com/library/content/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/HandlingRemoteNotifications.html#//apple_ref/doc/uid/TP40008194-CH6-SW1.
So in my app in Entitlements.plist I enabled Push Notifications. And in https://developer.apple.com/ I enabled Push Notifications in my Identifiers which is used for my profile. I also add Application Identifier in Entitlements.plist with the value of TEAMID.com.myorganization.MyApp and now I get this error when trying to deliver the app to TestFlight:
ERROR ITMS-90163: "Invalid Code Signing Entitlements. The entitlements
in your app bundle signature do not match the ones that are contained
in the provisioning profile. The bundle contains a key that is not
included in the provisioning profile: 'aps-environment'
What does this error mean and how to do I fix it? It seems to me like I need to include the Application Identifier to my provisioning profile and I have no idea how to do that, can anyone help, I have been stuck on this for days and none of the solutions out there havent worked for me.
Thanks,

CloudKit, remote-notification, and aps-environment

In setting up CloudKit remote notifications, I enabled the "Remote notifications" capability which adds the remote-notification field to my Info.plist. But then I get this error in the console:
Error Domain=NSCocoaErrorDomain Code=3000 "no valid 'aps-environment'
entitlement string found for application" UserInfo=0x17db9850
{NSLocalizedDescription=no valid 'aps-environment' entitlement string
found for application}
And this error is emailed to me when I submit to iTunes Connect:
Missing Push Notification Entitlement - Your app appears to include API used to register with the Apple Push Notification service,
but the app signature's entitlements do not include the
"aps-environment" entitlement. If your app uses the Apple Push
Notification service, make sure your App ID is enabled for Push
Notification in the Provisioning Portal, and resubmit after signing
your app with a Distribution provisioning profile that includes the
"aps-environment" entitlement.
Ok, so I am supposed to update my provisioning profile - but when I attempt to do that and enable Push Notifications, it requires me to create SSL certificates to use on my server. I am using CloudKit though - I don't have a server. How do I update my provisioning profile?
Despite the error, I submitted my app to the app store and it was approved just before Thanksgiving. I told them about the error when I submitted. They didn't respond telling me anything about the error, but my app was approved.
Now I am working on an update, and the error has vanished for me. I didn't do anything that I know would have fixed it. It really seems like just an error in their system.
For anyone who gets this error, if you looked into it and things seem right, just press on. Its probably just an issue on Apple's side and doesn't seem to negatively affect the app's functionality or likelihood to be approved.

iOS Push Notification Profile

I am currently working for a large client where things move slowly. I am in charge of fixing some issues for push notifications. When I run the app I get the following error:
didFailToRegisterForRemoteNotificationsWithError
Error Domain=NSCocoaErrorDomain Code=3000 "no valid 'aps-environment' entitlement string found for application" UserInfo=0x1753edb0 {NSLocalizedDescription=no valid 'aps-environment' entitlement string found for application}
The problem happens because I am using a Xcode managed profile that does not have push notifications enabled. What are different ways of obtaining that profile which has push notifications enabled? Does the client have to add me as a developer in their Enterprise program?
If I obtain the provisioning profile file from the client I do not think it will work since I believe it needs to be attached to the certificate created on my machine! I may be wrong on this. Looking for different suggestions!
Ask your client to create the four certificates:
The Development
The Distribution
The Push Development
The Push Distribution
Install those on the OS X Keys, then export those certs into a .p12 file. Then get this file to your computer, install the certificates from the .p12 file, and then he can export the provisioning profiles to you and they will work in your computer like a charm!
I think this link will help him do what I said.

iOS push notifications nightmares, Provisions app IDs and certificates

Hey Apple developers,
I'm pulling my hair out trying to figure out how iOS provisioning profiles, certificates and app IDs work with push notifications. I thought I was close to getting this to work, but maybe not.
When I run my app and attempt to register push notifications, I get this error in the console:
2012-06-26 17:52:29.380 Grouped[1732:707] badgeNumber: 0
2012-06-26 17:52:30.089 Grouped[1732:707] [INFO] device is ready
2012-06-26 17:52:32.654 Grouped[1732:707] JSLOG: Registering with APNS via the App Delegate
2012-06-26 17:52:32.655 Grouped[1732:707] Register success callback set
2012-06-26 17:52:32.661 Grouped[1732:707] didFailToRegisterForRemoteNotificationsWithError:Error
Domain=NSCocoaErrorDomain Code=3000 "no valid 'aps-environment' entitlement string found for
application" UserInfo=0x18a0c0 {NSLocalizedDescription=no valid 'aps-environment'
entitlement string found for application}
I've done several hours of research now and can't figure out what I'm doing wrong.
I've created a new provisioning profile that is linked to my app ID. I can see it on my phone.
Any ideas?
Bonus question: Why on earth is it so complicated to properly provision an iOS app for push notifications?
A couple things to check:
Do you have any other provisioning profiles for this app on your device? I'd delete them.
Does your App ID have push enabled in the provisioning portal?
Are you sure you're signing with the correct profile? It has to be a non-wildcard development certificate.
Are you specifying your own entitlements.plist file? Modern Xcode generates one, so you don't need to do this. Make sure your "Code Signing Entitlements" build setting is empty.
If you haven't already found it, Apple has a good FAQ about this:
http://developer.apple.com/library/ios/#technotes/tn2265/_index.html
"no valid 'aps-environment' entitlement string found for
application"
Your provision profile doesn't have push notifications enabled. Make sure you enabled them in the provisioning portal, generate a new profile, but more importantly make sure you actually installed it in Xcode and are signing your app with that profile. That last part has bitten me a couple times.
Be sure to create new adhoc/appstore profiles AFTER you created push certificates for your app. The distribution profiles change after enabling the App for push messages.

Resources