【发布时间】:2018-06-27 17:34:43
【问题描述】:
在阅读 Firebase 云消息传递的官方视频教程时,我无法在没有托管应用程序的情况下获得消息传递令牌。
这是我的app.js 文件:
/* global firebase */
// Initialize Firebase
var config = {
apiKey: 'AIzaSyBYfb9HAi_oE-PKqFNkRQcxAgLU-nm8sIE',
authDomain: 'web-quickstart-c0309.firebaseapp.com',
databaseURL: 'https://web-quickstart-c0309.firebaseio.com',
projectId: 'web-quickstart-c0309',
storageBucket: 'web-quickstart-c0309.appspot.com',
messagingSenderId: '713880824056'
}
firebase.initializeApp(config)
const messaging = firebase.messaging()
messaging.requestPermission()
.then(() => {
console.log('Permission granted.')
return messaging.getToken()
.then(token => {
console.log('messaging token test:', token)
return token
})
.catch(error => {
console.log('messaging error:', error)
})
})
.then(token => {
console.log('permission token test:', token)
})
.catch(error => {
console.log('permission error:', error)
})
我的根目录中有一个firebase-messaging-sw.js 文件。
当我直接在浏览器中加载index.html 文件并接受对话框时,我收到一个未定义的令牌值。完整的控制台输出是:
16:20:35.744 app.js:17 Permission granted.
16:20:35.750 app.js:20 messaging token test: null
16:20:35.751 app.js:28 permission token test: null
如果我通过编辑 firebase.json 文件来托管应用程序以读取:
{
"hosting": {
"public": "./"
}
}
然后运行firebase serve -p 8081,打开http://localhost:8081,并接受对话框,我确实收到了一个令牌。完整的输出是:
16:23:42.902 app.js:17 Permission granted.
16:23:43.059 app.js:20 messaging token test: eyd1EaFwULQ:APA91bGUZr9fAGcCaYVtXTPjk55AmpWLNdaqGapMa1S1GWTYeJwtJraEKuhAPpSM-v-2xPaSJQgTKRVosTN-0KRPHCccjdRZNDkegtW2HMC_mSbdap9h5TeH7KKQSbN4QrjVmIl7VZlu
16:23:43.060 app.js:28 permission token test: eyd1EaFwULQ:APA91bGUZr9fAGcCaYVtXTPjk55AmpWLNdaqGapMa1S1GWTYeJwtJraEKuhAPpSM-v-2xPaSJQgTKRVosTN-0KRPHCccjdRZNDkegtW2HMC_mSbdap9h5TeH7KKQSbN4QrjVmIl7VZlu
这是一个记录的约束吗?有没有办法在不托管应用程序的情况下接收令牌?
【问题讨论】:
-
本地主机是否在您的 Firebase 控制台设置中是一个已批准的域?
标签: javascript firebase firebase-cloud-messaging