如何在本机反应中获取设备令牌

Posted

技术标签:

【中文标题】如何在本机反应中获取设备令牌【英文标题】:How to get the device token in react native 【发布时间】:2017-11-09 05:29:26 【问题描述】:

我正在使用 react-native 0.49.3 版本,我的问题是如何在 iosandroid 的 react native 中获取设备令牌我尝试使用此 link 但它不适用于我,现在我尝试了IOS。怎么解决 谁能告诉我怎么配置?

【问题讨论】:

使用此链接获取设备ID github.com/rebeccahughes/react-native-device-info 嗨 @KapilYadav 你分享的链接仅适用于设备 ID,不适用于设备令牌 【参考方案1】:

我尝试了不同的解决方案,我决定使用React Native Firebase。

Here你会发现关于通知的一切。

此外,您还可以使用 Firebase 附带的其他库,例如 Analytics 和崩溃报告

设置库后,您可以执行以下操作:

// utils/firebase.js
import RNFirebase from 'react-native-firebase';

const configurationOptions = 
  debug: true,
  promptOnMissingPlayServices: true


const firebase = RNFirebase.initializeApp(configurationOptions)

export default firebase


// App.js
import React,  Component  from 'react';
import  Platform, View, AsyncStorage  from 'react-native';

// I am using Device info
import DeviceInfo from 'react-native-device-info';

import firebase  from './utils/firebase';

class App extends Component 

 componentDidMount = () => 
    var language = DeviceInfo.getDeviceLocale();

    firebase.messaging().getToken().then((token) => 
       this._onChangeToken(token, language)
    );

    firebase.messaging().onTokenRefresh((token) => 
        this._onChangeToken(token, language)
    );
  

  _onChangeToken = (token, language) => 
    var data = 
      'device_token': token,
      'device_type': Platform.OS,
      'device_language': language
    ;

    this._loadDeviceInfo(data).done();
  

  _loadDeviceInfo = async (deviceData) => 
    // load the data in 'local storage'.
    // this value will be used by login and register components.
    var value = JSON.stringify(deviceData);
    try 
      await AsyncStorage.setItem(config.DEVICE_STORAGE_KEY, value);
     catch (error) 
      console.log(error);
    
  ;  

  render() 
    ...
  

然后您可以使用令牌和您需要的所有信息调用服务器。

【讨论】:

感谢您的回复@Marcos Schroh 我已解决问题 我正在经历同样的情况,但我正在使用 react-native-fcm 进行 firebase 推送通知。有没有办法从 react-native-fcm 包中获取设备令牌? 你可以看看here这是一个例子怎么做(FCM.getFCMToken()) 此方法获取 FCM 设备令牌,但不获取 APNs 令牌。 APNs 令牌对于故障排除很有用。 token 在 firebase.messaging.getToken().then() 方法中为空,仅在 IOS 上适用于 android!有人告诉我是什么问题..

以上是关于如何在本机反应中获取设备令牌的主要内容,如果未能解决你的问题,请参考以下文章

即使设备在本机反应中重新启动,如何运行后台任务?

如何在反应本机中使用 XMLHttpRequest 在 GET 方法的标头中传递授权令牌

Firebase Cloud Messaging 令牌在没有第三方库的情况下本机反应

如何使用本机反应创建登录以及如何验证会话

在本机反应中初始化应用程序火力:错误“意外令牌

如何在本机反应中将设备的通知推送到另一台设备