首次使用Firebase和RN用户,试图弄清楚如何传输应用用户的设备ID /令牌。
我正在使用这样基本的东西来立即将信息传输到我的firebase数据库(使用firebase.database().ref()
)。
updateDB = (timestamp_key, item_name, item_url) => {
firebase.database().ref(timestamp_key).set({
item_name: item_name,
item_url: item_url
})
}
我无法找到一个简单直截了当的答案,如何获取一个设备令牌并传输它(所以我知道谁的行动是后者)。
有(我认为应该是)一种相对简单的方法吗?谢谢!
P.S。除了初始化连接的配置之外,我在脚本中调用了更高的位置 - 也许它就在这里,我需要抓住设备令牌?
// Initialize Firebase
const firebaseConfig = {
apiKey: "blah",
authDomain: "blah",
databaseURL: "blah",
storageBucket: "blah",
messagingSenderId: "blah"
};
firebase.initializeApp(firebaseConfig);
答案 0 :(得分:1)
所以我也在使用React Native的Expo。但是,我使用Google的Cloud Firestore而不是实时数据库。
我不确定我完全理解你的问题,但这就是我的做法:
const firebase = require('firebase');
import { Constants } from 'expo';
// Required for side-effects
require('firebase/firestore');
import { firebaseConfig } from './../keys';
class Fire {
constructor() {
this.init();
this.observeAuth();
}
init = () => firebase.initializeApp(firebaseConfig);
observeAuth = () => firebase.auth().onAuthStateChanged(this.onAuthStateChanged);
onAuthStateChanged = user => {
if (!user) {
try {
firebase.auth().signInAnonymously();
} catch ({ message }) {
console.warn(message);
}
} else {
this.saveUser();
}
};
saveUserInfo = () => {
const { uid } = this;
if (!uid) {
return;
}
// You can add any information here
const info = {
deviceId: Constants.deviceId,
};
const ref = this.db.collection('users').doc(uid);
const setWithMerge = ref.set({ uid, ...info }, { merge: true });
};
get db() {
return firebase.firestore();
}
get uid() {
return (firebase.auth().currentUser || {}).uid;
}
}
Fire.shared = new Fire();
export default Fire;
我从Evan Bacon的例子中得到了大部分代码 - https://github.com/EvanBacon/Expo-Pillar-Valley。
答案 1 :(得分:0)
要在React Native中使用firebase,您必须使用原生环境
以下是步骤:
<强> 1。弹出您的应用
npm run eject
或
yarn run eject
<强> 2。安装React Native Firebase(RNFirebase)
npm install --save react-native-firebase
或
yarn add react-native-firebase
第3。原生设置
您需要为firebase应用设置本机应用配置。请按照以下步骤操作:
从那以后,我不会在这里迈出一步。
<强> 4。安装数据库依赖
您必须为本机设置依赖关系才能使用数据库库。在最后一步中,您只需设置firebase核心。请按照以下步骤操作:
同样,我没有把这个步骤放在这里导致长篇故事。
<强> 5。使用强>
获取选项的示例用法:
// get app id
firebase.app().options.appId
firebase.database().ref(path).set(val);
firebase.auth().signInAndRetrieveDataWithEmailAndPassword(email, password).then((response) => {
console.log('signin with email', response);
firebase.auth().currentUser.getToken().then((responseToken)=>{
console.log('authorize', responseToken);
this.setState({ authorize: responseToken });
})
}).catch(function (err) {
console.log('Unable to get sign in.', err);
});
if (Platform.OS === 'ios'){
firebase.messaging().requestPermissions().then(() => {
console.log('Notification permission granted.');
}).catch((err) => {
console.log('Unable to get permission to notify.', err);
});
}
<强> 6。测试您的代码
react-native run-android
或react-native run-ios
启动您的应用取决于您的目标。