Closed dlcole closed 1 year ago
I have found through my investigation that is sufficient to call getAPNSToken()
prior to calling getToken()
to avoid the dreaded error message
Error: The operation couldn’t be completed. No APNS token specified before fetching FCM Token
Doing so also avoids their hang/crash problem documented in this issue, so I will close it. You'll still want to catch the error, as it will be thrown on iOS emulators. My code, in app-root.js, looks like this:
try {
const authStatus = await firebase().messaging().requestPermission({ ios: { alert: true, }, });
const enabled = authStatus === AuthorizationStatus.AUTHORIZED || authStatus === AuthorizationStatus.PROVISIONAL;
if (enabled) {
await firebase().messaging().registerDeviceForRemoteMessages();
firebase().messaging().showNotificationsWhenInForeground = false;
const aPNSToken = firebase().messaging().getAPNSToken();
const token = await firebase().messaging().getToken();
global.deviceToken = token;
// code to handle token...
firebase().messaging().onToken((token) => {
// code to handle token
});
...
} catch (e) {
console.warn("app-root error: " + e);
}
I have removed the lines from info.plist
suggested by [issue 221](https://github.com/NativeScript/firebase/issues/221)
.
This is related to the fix proposed in issue 221 regarding 'No APNS token specified error...
Adding the above lines to info.plist is sufficient to bypass the APNS error on iOS devices, but not iOS emulators.
BUT, this changes causes a hang in the login process. In particular,
let idp = await firebase().ui().show({ providers: [new PhoneProvider()] });
yields this sequence:
Might some type of Firebase AppDelegate be required for phone authentication?