Push Notifications wont work on distribution - iphone

Ok now I have a problem with the push notifications. I have set them successfully for the developing part and I was receiving them on my device. Now I have the application on app store and I cant receave notifications.
This is step by step what I did:
-I have created a provisioning profile for distribution and connected it to the app id that has push notifications for distribution and development.
-I have built the app for distribution with that provisioning profile.
-I have submitted the app on app store.
-Now I have 2 certificates in keychain access Apple Production IOS Push Service:AppID and iPhone Distribution:CompanyName
-I have made .pem file from both and tested it with both. No notification has arrived
I really have no idea what to try and how to fix this.

I have had similar problems, just a few weeks ago. For me the case was that I had several provisioning profiles left in xCode. So what I needed to do was:
Go to Organizer -> Devices -> Provisioning Profiles
Select my distribution profiles for the app in question, and delete them.
Go to developer.apple.com/iOS
Go to the distribution profile, modify it.
Just clicked "select all" (so I could re-save it with no changes), somehow the profile needed to be re-created AFTER enabling the Push certificate
Download the new profile and install it to xCode
Clean project under Product -> Clean
Now I made a new release and tested it and it worked. Maybe this workes for you as well.
Edit
The red-thread in this answer is that when Push notification in the App is enabled, the provisioning profiles need to be re-done (even though, to the eye there are no changes).

If using Parse, make sure you have uploaded your iOS Production Certificate. I ran into this issue and discovered a week later that I had only uploaded my iOS Development Certs to the server.
Settings > Push > Apple Push Certificates
You need to see something that has a Certificate Type of iOS Production with a valid expiration date.

Related

iPhone - App validation succesful, but loading developer build failed after this

I created distribution profile and built app with the distribution profile. I have validated the build and the validation is successful.
After this step, i tried to cross verify the app once again and built an app with developer provisioning profile. Archive file is created successfully. But app is failing to install in mobile.
What is the reason behind it.
Make sure you dont have duplicate keys in your keychain. Delete the old ones and create a new key and prov file then everything will work fine. Normally just dupe entries can cause this.
there are 2 reason for this error
1) you are not add device UDID in your developer provisioning profile.
2) In your device an app is already install with same developer provisioning profile so the your app is not install in your device.

How to configure a Xcode project for beta testing with TestFlightApp?

I signed up for TestFlight.
Then I followed all steps in this tutorial:
But Xcode throws this warning:
Application failed codesign verification. The signature was invalid,
contains disallowed entitlements, or it was not signed with an iPhone
Distribution Certificate. (-19011)
It smells like there is a lot more work to do than what they wrote in the tutorial.
Is there a complete tutorial which walks through every step without stepping over anything?
And do I need to add the SDK even for simple beta tests?
(Edit: No, SDK is not needed!)
Start with logging into the Provisioning Portal, and adding a test device or two, under Devices. Then go to Provisioning and create a new one for the appID you are working on and add those devices.
Back to Xcode and use the Organizer:Devices:Provisioning Profiles to download (refresh) the Provisioning Profile. Set your project's Debug scheme's signing to use that developer profile. You should then be able to build and then archive. Once archived, do an ad hoc distribution and save off that file to the desktop.
Go to your account on TestFlightApp.com and press the Upload Build button. Drop the file you saved on your desktop, into the Build upload area. TestFlightApp will give you errors if the app wasn't bundled for adhoc or signed properly.
Now, here is where TestFlightApp.com will save you work. Send out invites to friends from within TestFlightApp.com. TestFlightApp.com will manage notifying them and as they create an account, it will also help them find their UDIDs. These UDID's can be batched up and later downloaded by you and re-uploaded to the Apple Provisioning Center, into your devices section.
You then use Xcode to refresh your profiles, and rebuild the app, archive, and upload to testflightapp. Then you can select which one of your testers will get to see this build and what message they should be sent. Your testers will not have to figure out how to download the files and install them using iTunes or other app, they merely press the install button.
Believe me, while it is still a bit of work, it is so much better than not using TestFlightApp.com, especially if your users are not very savvy about app installation. In the future, you can use the TestFLight SDK to gather crash reports and usage information for your debug builds.
See the following for some more info: TestFlight beta-testing iOS app

Provisioning Profiles + Push Notifications + Production vs Development

I'm building an iOS app that uses push notifications, and I'm finally ready to submit it. Before I do, I'd like to test out push notifications off the Production server, to make sure everything is working correctly. Thus far, the sandbox environment has been working fine.
After doing quite a bit of searching, I learned that switching the servers over from ssl://gateway.sandbox.push.apple.com:2195 to ssl://gateway.push.apple.com:2195 wasn't enough, and that production push tokens are different from sandbox push tokens. Instead, apparently I need a new provisioning profile with Production entitlements, new certs installed on my server, and to re-build my app with said profile so that it knows to create the correct push tokens.
So, after going through all the steps, I can't even make a build run on my phone; XCode says
This profile cannot be installed on devices
Here are the steps I've taken. If I'm missing something please let me know:
In my iOS Developer Center, I've made sure that my AppID is "enabled for production" under the Apple Push Notification Service.
Also in my iOS Developer Center, I've created my Production Push SSL Certificate, gone through the necessary conversion steps, and installed the resulting .pem on my server.
Per the instructions, I've create "a new provisioning profile containing the App ID you wish to use for notifications." I've done this by going to Provisioning, and clicking on the "Distribution" tab, and making a new profile. I've confirmed that "production" is set under the "entitlements" section of this profile.
I've selected the provisioning profile in my project settings. I get the message
This profile cannot be installed on devices
and I'm stuck.
Build an ad-hoc distribution version of your app, and install it on your own device. That will use the production APN gateway and certs.
You cannot install an app compiled with a appstore distribution (production) profile on a device. Only Apple reviewers can do that. you can only test push on an app compiled in development mode and using sandbox server.
If you want to test production servers, you must compile the app using an AdHoc distribution profile enabling the devices you want to do the test. Clearly you must recompile and the send the app for review using the App Store distribution profile.

Why not use development provisioning instead of ad hoc?

I was under the impression that when you use a development provisioning profile for a build of an app, only the specified developers can deploy that build to a phone.
But I just deployed a build that uses a development profile to a phone using Xcode Organizer, even though I'm not one of the valid developers for that profile. One of my colleagues, who doesn't even have Xcode installed, did the same with his phone using iTunes.
In that case, why not use a development provisioning profile for distributing your app to e.g. your QA team, instead of ad hoc distribution?
EDIT: Please read the part in bold carefully before answering. I'm not asking a basic "how does this work" question. I've made a lot of development, ad hoc, and app store builds, and now I find that I seem to have made some wrong assumptions.
There's one situation in which you need an Ad Hoc profile, and that's when you want to test Push Notifications.
If you test Push Notifications on a Development Provisioning Profile, your push notifications need to be sent using the Development Push Notification Certificate for your SSL connections to Apple's sandbox APNS server.
If you want to test Push Notifications using your Production Push Notification Certificate and the live APNS servers, you'll have to deploy your app to a device using a Distribution Certificate and Ad Hoc Provisioning Profile (which includes doing the Entitlement.plist steps, which you can ordinarily skip if you were only using Developer Provisioning Profiles).
Also note that when you deploy using an Ad Hoc profile, your device token will be different from the one you use when you're using the development profile. This the recommended way to test APN because there's no back end changes that need to be made between the Ad Hoc build and the final live deployment on the AppStore.
Ad-Hoc is not for developers, but for testers. Who do not have iPhone SDK / XCode, iTunes only.
(The answer is: you can install ad-hoc app without developer certificate, and can't do it with development app)
Method 1: Install from XCode
The Development Provisioning Profile requires you to run the app (initially) from within XCode.
This has the side-effect of marking the device as being used for development, but also requires you to connect the iPhone/iPod Touch to the machine running XCode. Once you run the app from XCode, the app is installed on the device and you no longer need to be connected to the machine to run it. (Until you want to update the app.)
Method 2: Install from iTunes
An Ad-Hoc provisioning profile allows you to give the app to anyone and let them install it themselves using iTunes. You send them:
the app, and
the Ad-Hoc Provisioning Profile
They select these two and drag them onto iTunes. Then sync.
Later, you can give them an updated version of the app only (without the Ad-Hoc Provisioning Profile, since they've already installed that on their device) and they can drag the new app onto the iTunes icon to install the new version.
One limitation to Ad-Hoc distribution, is that it requires you to enter each Device ID into the iPhone Development Portal. And there is a limit to 100 device IDs per year (you cannot erase any IDs, until your next year begins -- only add them). The 100-ID limit will not be a hindrance for most developers, just keep in mind that you need to get the device ID ahead of time, before you create the Ad-Hoc Provisioning Profile to send to the person you want to install your app.

iPhone: Application Install Fails With "Invalid Signer" Error

The iPhone is attached to a Mac runnning the latest iTunes version and I am 100% sure that her UDID is in the provisioning file. Her iPhone has not been jailbroken and we even restored it to factory settings.
I am having trouble installing our development build on this one iPhone. The error is:
the application "[Application Name]" was not
installed on the iPhone "iPhone"
because the signer is not valid
I am 100% sure that the UDID is accurately entered in the provisioning file and that they correctly copied the right provision file/build combo. This same combo has been successfully installed on over a dozen iphones.
We have been able to install this on some devices with no problems.
Edit:
From comments to an answer:
We can install it on 100 iphone with
our account. We have about 40 iphones
in this provisioning profile and it
works on 38 of them.
I had a fix that seemed to work for one user who was having troubles:
remove all offending profiles and apps
restart
add back provisioning profile FIRST
sync device
now add app resource
sync again to get app on device
the offending machine was a windows box... dunno if that makes a difference.
If someone else gets this issue - try this and let us know if this is the actual fix or workaround! This goblin has rarely been seen and solved with the same steps.
this was my reference for the fix idea:
http://iphone.forums.wordpress.org/topic/installing-beta#post-1194
Does the answer to this question help you at all?
Signer not valid error
Put the signing at the Target level, not the Project level
I'm personally not sure what that means but it worked in that case
We can install it on 100 iphone with our account. We have about 40 iphones in this provisioning profile and it works on 38 of them. Any other ideas?
I'll tell Buzz that you say hi and if you can help us we'll get you a moon rock!
(Ignore: I misread the question and didn't notice he had dozens of installs already so my advice does not apply)
If you have just the standard developers account, you can only install on up to five phones before the certificate becomes invalid for further installs. If you've already installed it on five phones that is most likely the problem.
Tell Buzz some random guy on the internet said, "Hi!"
A couple of things to try:
Renew the profile at the Developer's portal. It may have expired or become corrupt.
Create a new provisioning profile
Does the mobileprovision file show up on the device after sync? You should see it in
Settings->General->Profiles
If it doesn't then that would be the problem. Check once again that the UDID is correct - same UDID on iTunes and in the developer portal. Try syncing iTunes with the mobileprovision without trying to install the app. If it still doesn't get installed then CHECK THE UDID. If it is getting installed on all other devices, UDID is most likely the issue.
If the distribution signing certificate was revoked in the meantime and recreated, you need to remove the old provisioning profile from the device first. This is on an iOS 3.1.3 device.
This happened to me recently and I resolved it. Situation was that I had an ad hoc provisioning profile I was using successfully for around 40 devices with several different apps. When a new device was required I would add it to the profile, download, then use 'share' from XCode with the same archived app but the new profile.
Recently my distribution certificate expired, so I created a new one and recreated the provisioning profiles. Subsequently, I could still install on the existing devices but would get an error trying to install on new devices, even though I had added them to the profile and installed the profile on the device.
The secret was that although I had created the new distribution cert and added it to my KeyChain, there was still a copy of the old cert in the KeyChain, and that was being used to sign the app. It turns out that if you do not delete the old provisioning profiles from XCode, when you start up XCode it will recreate the old cert in the KeyChain, and that will be used to sign the app, which means that the new profile with the new device (created with the new cert) will not match.
Solution: when you renew your cert, delete all the old profiles signed with that cert, delete the old cert, then recreate, download and install the new profiles.
hth