首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将OneSignal与Angular 5集成

问将OneSignal与Angular 5集成
EN

Stack Overflow用户
提问于 2019-03-04 15:13:37
回答 1查看 1.3K关注 0票数 0

我正在尝试将OneSignal集成到我的Angular 5应用程序中。我已经在src文件夹中放置了manifest.json、OneSignalSDKWorker.js和OneSignalSDKUpdaterWorker.js,并在.angular-cli.json中的assets下创建了条目,以便可以访问这些文件,但我仍然面临着service worker安装失败的问题。错误是在app.component.ts中获取HTTP404我已经放置了初始化代码,但仍然收到错误: Service Worker安装安装service worker失败TypeError:无法注册ServiceWorker:获取脚本时收到错误的HTTP404响应码( 404 )。

代码语言:javascript
复制
ngOnInit(){

    var OneSignal = window['OneSignal'] || [];
    console.log("Init OneSignal");
    OneSignal.push(["init", {
        appId: "xxx-xxx-xxx-xxx-xxx",
        autoRegister: false,
        allowLocalhostAsSecureOrigin: true,
        notifyButton: {
            enable: true
        }
    }]);
    console.log('OneSignal Initialized');
    OneSignal.push(function () {
        console.log('Register For Push');
        OneSignal.push(["registerForPushNotifications"]);
    });
    OneSignal.push(function () {
        OneSignal.on('subscriptionChange', function (isSubscribed) {
        console.log("The user's subscription state is now:", isSubscribed);
            OneSignal.getUserId().then(function (userId) {
                console.log("User ID is", userId);
            });
        });
    });
}
EN

回答 1

Stack Overflow用户

发布于 2019-05-13 17:48:42

我不认为它会在本地主机上工作,你需要将它发布到一个单独的主机上(你可以使用Firebase,它是免费的)。

最简单的解决方案是将一个信号提供的脚本放入index.html中

代码语言:javascript
复制
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8" />
    <meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
    <meta
      content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no"
      name="viewport"
    />

    ...
    ...

    <link rel="manifest" href="/manifest.json" />
    <script src="https://cdn.onesignal.com/sdks/OneSignalSDK.js" async=""></script>
    <script>
      var OneSignal = window.OneSignal || [];
      OneSignal.push(function() {
        OneSignal.init({
          appId: 'xxx-xxxx-xxxxx',
        });
      });
    </script>

    ...

将以下内容添加到angular.json中

代码语言:javascript
复制
    ...
    "architect": {
        "build": {
          "builder": "ngx-build-plus:build",
          "options": {
            "outputPath": "dist/browser",
            "index": "src/index.html",
            "main": "src/main.ts",
            "polyfills": "src/polyfills.ts",
            "tsConfig": "src/tsconfig.app.json",
            "assets": [
              "src/favicon.ico",
              "src/favicon.png",
              "src/manifest.json", <-- this 
              "src/OneSignalSDKUpdaterWorker.js", <-- this 
              "src/OneSignalSDKWorker.js", <-- and finally this one
              "src/assets"
            ],
            "styles": [ 
              "src/styles.scss"
            ],
            "stylePreprocessorOptions": {
              "includePaths": ["src/assets/sass"]
            },
            "scripts": []
          },
          ...

并将清单和2个*.js文件放入/src/*中

就这样。

我用这种方法让它在我的机器上工作。希望这能有所帮助

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54978264

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档