The binary interface of the production environment is available
through gateway.push.apple.com, port 2195; the binary interface of the
development environment is available through
gateway.sandbox.push.apple.com, port 2195.
See: https://developer.apple.com/library/ios/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/Chapters/CommunicatingWIthAPS.html
A. Make sure that you use the correct link when pushing the notification
For Development, you use: gateway.sandbox.push.apple.com
For Production, you use: gateway.push.apple.com
B. When you build and run the XCode project directly to the connected device, the generated IPA is using development provisioning certificate. So, the production push notification will not send to the device. I make this mistake when I started to learn about push notification long time ago.
In order for you to test the production push notification on your device, you must:-
Delete the app from your device.
Make sure that the provisioning profile under "Release" is using an ad-hoc distribution profile.

Generate an ad-hoc provisioning IPA using Archive. Export the IPA to desktop or anywhere you like.
Open the Organizer from your XCode, go to "devices". Drag and drop the newly generated IPA into the application of your current connected device.
The app available on your device is now using Distribution certificate. The device token it sends to the server will be different compare with device token for development certificate. So, you must use the correct device token.
If you are doing everything correctly, you should receive the production push notification.