skip to Main Content

We are using devices which has Linux OS, javascript enabled (using node.js). We are using google FCM to receive notifications. We are using a javascript library (added register() here) to get the fcm token by passing sender ID. It was all working fine. But from past few days we are getting PHONE_REGISTRATION_ERROR and UNIMPLEMENTED error / UNIMPLEMENTED error when we are trying to get the FCM token.

Below is the code snippet.


(async () => {                                                                                           
  try {                                                                                                                        
    const credentials = await register(senderID);
    const token = credentials.fcm.token;                                                                                                                                                               
    const persistentIds = [];
    await listen({ ...credentials, persistentIds }, onNotification);                                   
  } catch (e) {                                                                                                                                
    console.log("Error::" + e);                                                                                                                
  }                                                                                                                                            
})();

Below is the code for register function

const uuidv4 = require('uuid/v4');
const { register: registerGCM } = require('../gcm');
const registerFCM = require('../fcm');

module.exports = register;

async function register(senderId) {
  // Should be unique by app - One GCM registration/token by app/appId
  const appId = `wp:receiver.push.com#${uuidv4()}`;
  const subscription = await registerGCM(appId);
  const result = await registerFCM({
    token : subscription.token,
    senderId,
    appId,
  });
  // Need to be saved by the client
  return Object.assign({}, result, { gcm : subscription });
}

From past few days we are getting PHONE_REGISTRATION_ERROR and UNIMPLEMENTED error like below.

Register request has failed with Error=PHONE_REGISTRATION_ERROR
Retry... 1
Error::StatusCodeError: 501 - "{n  "error": {n    "code": 501,n    "message": "Operation is not implemented, or supported, or enabled.",n    "status": "UNIMPLEMENTED"n  }n}n"

Or some times UNIMPLEMENTED error alone and unable to get the token. I tried to restart the devices multiple times but of no use.

I went through lot of questions online. All are showing issues with Android apps where the solution is like to clear cache, remove app and reinstall app. But I couldn’t find a solution for this javascript based program. Can someone please let me know if there is anyway to solve this issue.

2

Answers


  1. Chosen as BEST ANSWER

    The javascript library push-receiver is using legacy APIs of firebase. FB stopped supporting these APIs which is the reason for the failure. We changed our code to use push-receiver-v2 library which fixed the issue.


  2. I’m having the same issue. I’m using the same library in my Electron app.

    For the devices which already successfully fetched the FCM token, everything works fine. But new devices are not able to retrieve a new FCM token. They’re getting the same error as mentioned in the OG post.

    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search