我想在我的GWT的web应用使用火力云通讯服务,但我坚持着一些问题。该应用程序应该能够注册的火力点服务人员,并与它的具体令牌连接到服务。此令牌,接收到的消息和当令牌的变化应该是在我的GWT Java代码accessable事件。
当我尝试使用handle.getToken来创建令牌()时发生错误。我收到此错误信息:
坏HTTP响应代码(404)获取的脚本时已被接收。 未能加载资源:净:: ERR_INVALID_RESPONSE browserErrorMessage:“未能注册ServiceWorker:一个坏HTTP响应代码(404)获取的脚本时已被接收。” 代码:“短信/失败-serviceworker注册” 的消息:“消息:我们无法注册默认的服务人员无法注册ServiceWorker:A坏的HTTP响应代码(404)获取脚本时收到(信息/失败-serviceworker注册)“。 栈:“FirebaseError:消息:我们无法注册默认服务人员未能注册ServiceWorker:A坏的HTTP响应代码(404)获取脚本时收到(信息/失败-serviceworker注册).↵在https://www.gstatic.com/firebasejs/3.5.2/firebase-messaging.js:41:225"__proto__:错误
它试图访问注册服务工作者的网址是:http://127.0.0.1:11111/firebase-messaging-sw.js
所以很明显的问题是,它试图从我的本地主机地址访问的JavaScript,而不是在其他的火力点JS文件的位置。所以我的问题是我怎么能更改,以便它加载从正确的源文件?
这些脚本包含在我的HTML文件:
<script src="https://www.gstatic.com/firebasejs/3.6.1/firebase.js"></script>
<script src="https://www.gstatic.com/firebasejs/3.5.2/firebase-app.js"></script>
<script src="https://www.gstatic.com/firebasejs/3.5.2/firebase-auth.js"></script>
<script src="https://www.gstatic.com/firebasejs/3.5.2/firebase-database.js"></script>
<script src="https://www.gstatic.com/firebasejs/3.5.2/firebase-messaging.js"></script>
<script>
// Initialize Firebase
var config = {
apiKey: "AIzaSyBxdZNXHiLR1IC8Wrw3Y6q_5DFoN8hn_UY",
authDomain: "fir-test-848de.firebaseapp.com",
databaseURL: "https://fir-test-848de.firebaseio.com",
storageBucket: "fir-test-848de.appspot.com",
messagingSenderId: "974661154941"
};
firebase.initializeApp(config);
</script>
这是我的Java代码:
公共类火力 { 私人JavaScriptObject _messagingHandle; 私人字符串_token; 公共火力() { _messagingHandle = createMessagingHandle(); requestPermission(_messagingHandle,本); } 私人本地JavaScriptObject createMessagingHandle() / * - { 返回$ wnd.firebase.messaging(); } - * /; 私人本地无效listenTokenRefresh(最终JavaScriptObject手柄) / * - { handle.onTokenRefresh(函数() { 例如@ x.client.miscellaneous.FireBase :: onTokenRefresh()(); }); } - * /; 私人无效onTokenRefresh() { 为gettoken(_messagingHandle,本); } 私人无效本土requestPermission(最终JavaScriptObject手柄,最终对象实例) / * - { handle.requestPermission(),然后(函数()。 { $ wnd.console.log( '通知权限授予'); 。比如@ X。 client.miscellaneous.FireBase :: onPermission(Z)(TRUE); }) } - * /; 私人无效onPermission(最终布尔授予) { 如果(授予) { 为gettoken(_messagingHandle,这一点); } } 私人本地无效为gettoken(最终JavaScriptObject手柄,最终对象实例) / * - { 。handle.getToken(),然后(函数(currentToken) { 如果(currentToken) { 。比如@ x.client.miscellaneous.FireBase :: onTokenReceived(Ljava /朗/字符串;)(currentToken); } 其他 { //显示权限请求。 $ wnd.console.log( '没有实例ID令牌可请求权限生成一个。'); 。比如@ x.client.miscellaneous .FireBase :: onTokenReceived(Ljava /郎/字符串;)(空); } }) } - * /; 私人无效onTokenReceived(最后弦乐令牌) { 如果(!令牌= NULL) { GWT.log( “接收的令牌:” +令牌); 如果(!token.equals(_token)) { //发送/更新令牌服务器 } } } }
在火力地堡SDK试图在特定的位置,以注册服务工作者。
该位置是+ /firebase-messaging-sw.js。有两个选项:
在浏览器(1)制作+ /firebase-messaging-sw.js工作,即确保它返回一个有效的响应),然后再次尝试使用SDK(它应该工作,如果浏览器可以访问该文件)。
2)使用useServiceworker(<service worker registration>)
方法在自定义服务工作者通过。这仍然需要你有一个有效的服务工作网址。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句