React Native用Expo开发Notification模块时遇到无法获取设备GCM Token的问题
问题描述
今天在Expo环境下编写React Native APP推送模块的时候,遇到无法获取device token的问题:Error: Couldn’t get GCM token for device
与Expo社区中的该问题类似,中文技术社区没有看到比较相似的问题反馈,所以结合自己的解决方法做一个记录。
大致的反馈有如下几种原因:
- Expo版本变更导致启动方式变动
- 需要登陆Expo开发账户才有权限
- 安卓与苹果手机运行Expo虚拟机有区别
我自己的项目环境Expo版本是32+,所以基本排除第一种可能,并且在安卓和苹果设备上运行都有同样错误。
相关文档
问题复现
按文档将获取device token,发送给API,并设立listener的代码在首屏中实现后,启动server出现Error: Couldn’t get GCM token for device或者是类似没有权限的warning。
解决方法
比较关键的是需要通过
expo login
在项目开发目录下登录你的expo开发账号,再运行服务器,此时才会有获取设备信息的权限,并不是仅仅在expo手机app上登录账号即可,这也是即使看到了相关回复也很困惑的一点。
- 确保使用了Expo Cli,在package.json中有expo start的script。
- 在命令行中执行expo login,登录你的expo账号。
- 再次执行yarn start(或是你自己启动命令),在网页中的扫码界面可以看到有绿色小字在log前显示登录的账号
- 此时使用手机上的模拟器扫码加载,错误不再出现,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/