Phonegap + Cordova + Firebase + Push Notification +iOS - ios

i'm new in the world of certificates, and reading aware i had to adapt my flow to various case posted but without resolve the problem as per my current configuration.
Can you please confirm me the flow to produce the certificate app rightly ?
WHAT WAS DONE
App ID creation
Create an App ID (ex. com.dir.app)
Enable for app ID com.dir.app the push certification
Development APNS creation
[keychain] - produce a pair of key by a Certification request (key pair name: com.dir.app.dev)
[dev.console] - upload certificate SSL for the dev push part inside App ID options
Download the certificate com.dir.app.dev.apns.cer
Open it and export it as com.dir.app.dev.apns.p12
Development certificate creation
Go to Development Certificate tab
Create a new Dev. Certificate providing the previous key produced (com.dir.app.dev)
Download the certificate produced and install inside local machine Keychain. Now the key appear to be certified with the downloaded certificate
Export the certificated as com.dir.app.dev.p12
Provisioning creation
[dev-console] Create a new mobile provisioning for dev (iOS App Development) selecting the appID - Here a problem occurs: apple provide a certificates list without showing ANY details about certificates - instead, for production certificates, an expired date as detail is shown. So i tried to perform various tests.
Export it as com.dir.app.dev.mobileprovision
App Key creation
[dev-console] - Go go the Keys tab
Create a new key
Download the new key as com.dir.app.key.p8
Firebase configuration
Create a new application calling it with the same name of app ID created at point 1 (com.dir.app)
Go to the Cloud messaging tab
Select the application com.dir.app
Insert the new APNS key produced in .p8 format with its ID
Phonegap configuration
Add a new key using as .p12 the file produced at point 10 (com.dir.app.dev.p12), as provisioning file produced at point 12 (com.dir.app.dev.mobileprovision) with respective password.
Assumptions
[Phonegap] - Phonegap build finish correctly and keys are correctly selected
[Backend] - The backend system is currently working with another application (for which iOS configuration are suspects ...)
[Token for Push] - The Token is correctly generate by the backend system
Problem
The push notifications are not received by the app installed on ad iPad with iOS 11.2.2
QUESTIONS
During the configuration of Phonegap, i have to provide the .p12 file for the push notification instead the development p12 certificate exported?
I have another application that inside the App ID tab (in the developer console), doesn't have the Push Notification SSL certificates configured: **how is possible that this application (eg. com.dir.alpha) is able to receive the push notification? Is there maybe another way to enable push?
Many thanks in advance.
Simon

Problem was solved resolving this one Firebase + Push + iOS
Based on your system GCM management, after having being sure to have configured properly your GCM creation and registration, you must have to being sure also to are able to send a push by the Firebase > Notification console selecting "Single Device" as push device target.

Related

What is a right way to generate the Certificates while using FCM

I am amazed to see that When ever I am creating Certificates "Apple Push Notification service SSL (Production & Development)" it is not shown in Profiles
Things are very much changed on Developer portal And after bashing my head many times (deleting and creating different certificates) its is not working for me
What I am doing:
Attempt 1: When I create certificates from certificate menu it did appear on Profile menu (from where we create provisioning profile & selects certificates) but when I create APNs SSL certificate it never appears in provisioning profile menu
Attempt 2: I created separate SSL certificate and created p12 file from them and uploaded them into FCM server and then i created normal certificate and generated Provisioning profile and installing them in xcode it gives me error of not including something for Notification.
So after trying all these I am now not able to run app on device and not able to work around for FCM notification
Question: What steps are needed to create certificate while working on FCM?
"NOTE: Since all interface and working procedures are updated on developer portal is updated so all help on SO and other places are out date. Please let me know what should I do and how it is done in precise manner it will be great help. THANKS"
I suggest to use for push notification, .p8 key because this same key will work for both sandbox And production mode.
Use this solution to generate .p8 Key And upload key on firebase read this articles

Firebase + Push + iOS

We encountering a problem during the push notification send in firebase.
Currently we have done these steps:-
We created a new app ID com.company.appname.country (without
assigning it the push notification service)
We have create a development certificate for the app id
com.company.appname.country (this creating a sign key request from local
keychain)
We have create a create a sign key to create the development SSL
certificate for the push notification (using the same key request
created in the step 2)
We have download and install all certificate inside the local current
keychain
We have create a development mobileprovision for the app
com.bossitalia.gobooking.ch selecting all certificates avaialble
We have create a local project with XCode selecting the development
mobileproviion file and the com.bossitalia.gobooking.ch certificated
created in the point 2
After having build successfully problem relates to the notification
is still present.
NB: in this configuration, Firebase application (com.company.appname.country) was configured in the "Cloud Messaging" setting tab by the SSL certificates (both for development and production - aka .p12)
Another test that we tried to do is to configure Firebase application without SSL certificates, but by adopting the current existing API key (created in the developer console).
Also in this last test, notifications seem to not work.
A final test was conduct inside Firebase > Notification tab, where in, when we set a test message for the ios device, a message error
Registration token not registered
compare on the same line of iOS device.
What's can be the problem?

ios push notification certificates with Back4App

I need to build an update for an iOS application that uses Back4App as backend and we have some push notifications integrated.
The previous version of the app wasn't created by me so I don't have the private key of the previous Push Notification Certificate and I had to recreate them both for Development and Production.
So my questions are:
If I upload the new Push Notification Certificates then will the old versions of the app continue working?
This seems to be a bug in the Back4App Dashboard, because I have added the new certificates, but I can't remove the older ones.
If I try to remove a certificate with the X button the I receive a Forbidden (403) error in the error console of the browser and the removed certificates keeps re-appearing when I refresh the window of the browser. (see attached screenshot)
Considering you are generating the new certificate with a new bundle id, you should keep both certificates uploaded there.
Parse stores in the Installation table the bundle id that the client is using and use the correct certificate for each of them.
Therefore existing users will keep using old certificates and new users (also the existing users that have already updated their apps) will start using the news ones.
Regarding the bug, could you please report it in the web-site chat together with your app id?

iOS: Send Push Notification from AWS SNS to APNS

My AWS SNS stopped sending push notifications to my subscribers on iOS and I am trying to understand why. So I started from scratch with the aim to deliver 1 notification to my test device.
I have done the following:
Create new certificate on iOS Dev Portal of the new "Apple Push Services" type, not the old "APNs iOS Production", imported to keychain, exported certificate and private key, added those to AWS as described in the AWS SNS APNS instructions.
Confirmed that this new APNS certificate shows up in the "Production SSL Certificate" list in my App ID on the portal.
Create "iOS Production" application in AWS SNS and load the credentials above.
Build the app for my test device, subscribe to notifications, get the token and strip all spaces etc. and with that token create a new Endpoint on AWS SNS.
Select that single Endpoint and send a message to it.
I just get this error in the CloudWatch Logs:
"providerResponse": "NotificationErrorResponse(command=8, status=InvalidToken, id=1, cause=null)"
I've been through this process a few times, created new certificates, tried with old ones, reinstalled the app several times, etc. etc. I even ran across this issue of the Apple CA certificate expiring today as I saw most of the certificates on my Keychain appearing red with the message "This certificate has an invalid issuer" but apparently this should not be an issue according to Apple (also the above did not work from yesterday).
I feel like I have exhausted the research I can do here.
What is it that I am missing?
Or how can I debug this? I using the credentials I can successfully "ssh" to the APN server, is there a way to interactively figure something out there?
UPDATE:
It could be that I'm trying with the "production" certificate but on an app Im' building from Xcode? Isn't this new certificate supposed to work for both the Sandbox/dev and production version?
The most direct way to answer this question is to answer this:
It could be that I'm trying with the "production" certificate but on an app Im' building from Xcode? Isn't this new certificate supposed to work for both the Sandbox/dev and production version?
In simple terms... Not really. You could try to pull this off but it gets weird. You have to create an ad hoc distribution and load that onto your phone to get this to work. Every time you click run in Xcode, it runs the release certificate (AKA the Development Profile. Unless you've changed this in the scheme settings. You can't run a production APNS with a development certificate.
To expand - The production push-notification certificate matches the distribution provisional profile - the sandbox push-notification certificate is for the developer provisional profile
Anything run from Xcode to your phone runs the developer profile and will except the sand box certificate. Once you click Archive - you should have Distribution set for your archiving in your Manage Scheme settings

Make Parse Push Production Certificate - iOS

I am trying to make Push Certificate for Production so I am following the instructions here https://parse.com/tutorials/ios-push-notifications, but in step 2, it says it should have a name of
Apple Production IOS Push Services
As I have changed this for production as it says to do in the note
"Note that you've just enabled Push Notification for your app in development mode. Prior to releasing your application on the App Store, you will need to repeat steps 1 through 7 of this section, but select "Production Push SSL Certificate" in step 2 instead, as covered in Section 7."
But mine comes out as
Apple Push Services
And then in section 2 and 3 when I try to add my .p12 file it says
Why is this happening and how can I set up Push with Parse for Production.
Thanks
It seems that Apple has changed the common name that they are embedding in the production push certificates that they issue. This seems to be related to the deprecation of the older binary push service in favour of the new HTTP/2 service.
A certificate I issued earlier in the year has an common name of "Apple Production IOS Push Services: appname" while a certificate I just created has a common name of "Apple Push Services: appname". Parse seem to have verification code that checks the certificate common name and this code does not accept the new name format.
There is nothing you can do on your side; Parse will need to update their code to accept the new certificate name.
You're creating one of the new "Universal" certificates. Now you don't have separate certificates for Production and Development - just one certificate for both.
These certificates have a different name to the previous format. Perhaps the Parse control panel has not been updated to handle this yet.
https://developer.apple.com/news/?id=12172015b
I'm assuming that you already created "Certificate from a Certificate Authority".
You need to open Keychain Access program. It is located in your Utilities folder in your Applications folder.
After you create your push certificate (the one you download in the developer portal), click it and install it into your keychain.
When you do, it will show up like this:
This is what Parse means in the instructions by it will have the name "Apple Production IOS Push Services"
Next, you will want to right-click your Production push certificate and click "Export Apple Production iOS Push Services":
Then it will take you to this screen to enter a password. DO NOT enter a password. Just click OK:
Then you will be asked to enter your system password. This is the same password that you use to login to your computer when you first turn it on. If you don't know it, then find out because you will need to know it to generate the p12 file.
Then name your P12 file:
This is the file that you will have to upload to Parse for production.
To create development P12, it is exactly the same. In fact, you should create your development p12 first, so you can test it on your development app.
Its because Apple announced a new HTTP/2 based provider API and simplified certificate management process thus changing the way these certificate were named (From Apple Production IOS Push Services to Apple Push Services), and Parse needed to update their system to allow for such certificate to be verified. Thats why you were getting this error. You should try again now, it seems to be working, mine just went through.
Happy Coding!

Resources