Dav*_*son 10 javascript firebase firebase-cloud-messaging
在完成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)
})
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
如果我通过编辑firebase.json
文件来托管应用程序:
{
"hosting": {
"public": "./"
}
}
Run Code Online (Sandbox Code Playgroud)
然后运行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
Run Code Online (Sandbox Code Playgroud)
这是一个记录的约束吗?有没有办法在不托管应用程序的情况下接收令牌?