React Native用Expo开发Notification模块时遇到无法获取设备GCM Token的问题

Author Avatar
DataLeoZ 7月 09, 2019
  • 在其它设备中阅读本文章

问题描述

今天在Expo环境下编写React Native APP推送模块的时候,遇到无法获取device token的问题:Error: Couldn’t get GCM token for device
与Expo社区中的该问题类似,中文技术社区没有看到比较相似的问题反馈,所以结合自己的解决方法做一个记录。
大致的反馈有如下几种原因:

  1. Expo版本变更导致启动方式变动
  2. 需要登陆Expo开发账户才有权限
  3. 安卓与苹果手机运行Expo虚拟机有区别

我自己的项目环境Expo版本是32+,所以基本排除第一种可能,并且在安卓和苹果设备上运行都有同样错误。

相关文档

  • 关于Expo下实现推送通知的步骤链接
  • expo的命令行文档

问题复现

按文档将获取device token,发送给API,并设立listener的代码在首屏中实现后,启动server出现Error: Couldn’t get GCM token for device或者是类似没有权限的warning。

解决方法

比较关键的是需要通过

expo login

在项目开发目录下登录你的expo开发账号,再运行服务器,此时才会有获取设备信息的权限,并不是仅仅在expo手机app上登录账号即可,这也是即使看到了相关回复也很困惑的一点。

  1. 确保使用了Expo Cli,在package.json中有expo start的script。
  2. 在命令行中执行expo login,登录你的expo账号。
  3. 再次执行yarn start(或是你自己启动命令),在网页中的扫码界面可以看到有绿色小字在log前显示登录的账号
  4. 此时使用手机上的模拟器扫码加载,错误不再出现,token成功发送给后端API

This blog is under a CC BY-NC-SA 3.0 Unported License
本文使用 CC BY-NC-SA 3.0 中国 协议许可
署名-非商业性使用-相同方式共享(BY-NC-SA):使用者可以对本创作进行共享、演绎,但使用时须进行署名(同时标明是否(对原始作品)作了修改),且不得运用于商业目的,采用本创作的内容必须同样采用本协议进行授权。详情请参考协议细则。

本文链接:https://dataleoz.com/dev-expo-get-gcmtoken-error/