我正在尝试将OneSignal集成到我的Angular 2应用程序中,以接收推送通知。首先,我使用普通的HTML创建了一个HelloWorld应用程序,并且它非常有效。所以我尝试将其包含到我的Angular应用程序中,但是用户没有被创建/注册,因此无法订阅接收任何通知。
代码摘录:
index.html
代码摘录:
index.html
<html>
<head>
<meta charset="utf-8">
<title>My Angular App</title>
<base href="/">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="icon" type="image/x-icon" href="favicon.ico">
<head>
<link rel="manifest" href="/manifest.json">
<script src="https://cdn.onesignal.com/sdks/OneSignalSDK.js" async></script>
<script>
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('Registered For Push');
OneSignal.getUserId().then(function (userId) {
console.log("User ID is", userId);
});
});
</script>
</head>
</head>
<body>
<app-root>
<div class="wrap">
<div class="loading outer">
<div class="loading inner"></div>
</div>
</div>
</app-root>
</body>
</html>
userId 总是 null。
我已经检查了以下内容:
- App ID 正确
- 浏览器中通知权限设置为允许
问题:
- 是否有一种方法可以在任何组件内部完成所有初始化工作,比如在 ngOnInit() 方法中?
- 我想在用户单击组件内的按钮时注册推送,而不是使用铃铛图标。如何实现这一点?(我知道将 notifyButton 设置为 false 将不会显示通知铃铛)
P.S:使用 Angular CLI 在 Chrome 上测试(在 Firefox 或 Safari 上无效)
angular-cli
的 Angular 5。非常感谢,你救了我的一天! :) - Maxime Lafarie