在接收聊天时创建推送通知
Creating a push notification on receiving chat
我是 angular 2 和 Firebase 的新手,但我设法创建了一个聊天应用 here,我的最终目标是在聊天中有新消息时创建推送通知应用程序。
我试过安装 this 但是安装起来非常困难,因为我看不懂文档。
我也尝试了 this thread 的解决方案。但该应用程序不会检测到通知。
关于如何解决这个问题的任何帮助?
这是我的app.component.ts
import { Component } from '@angular/core';
import { AngularFire, AuthProviders, AuthMethods, FirebaseListObservable } from 'angularfire2';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent {
items: FirebaseListObservable<any>;
name: any;
msgVal: string = '';
constructor(public af: AngularFire) {
this.items = af.database.list('/messages', {
query: {
limitToLast: 5
}
});
this.af.auth.subscribe(auth => {
if(auth) {
this.name = auth;
}
});
}
login() {
this.af.auth.login({
provider: AuthProviders.Facebook,
method: AuthMethods.Popup,
});
}
chatSend(theirMessage: string) {
this.items.push({ message: theirMessage, name: this.name.facebook.displayName});
this.msgVal = '';
}
mychange(){
console.log("change happned"); // updated value
}
}
我的 app.module 文件包含
import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { FormsModule } from '@angular/forms';
import { HttpModule } from '@angular/http';
import { AppComponent } from './app.component';
import { AngularFireModule} from 'angularfire2';
import {initializeApp,database} from 'firebase';
export const firebaseConfig = {
apiKey: "AIzaSyAQUetWt-pH-WuMTZ-lonP2ykICOl4KiPw",
authDomain: "anguchat-eb370.firebaseapp.com",
databaseURL: "https://anguchat-eb370.firebaseio.com",
storageBucket: "anguchat-eb370.appspot.com",
messagingSenderId: "267732203493"
};
initializeApp(firebaseConfig);
database().ref().on('value', function(snapshot){
var x = snapshot.val()
console.log("This prints whenever there is a new message");
});
@NgModule({
declarations: [AppComponent],
imports: [
BrowserModule,
FormsModule,
HttpModule,
AngularFireModule.initializeApp(firebaseConfig)
],
providers: [],
bootstrap: [AppComponent]
})
export class AppModule { }
我会订阅您组件中的消息数据库。如果您想使用 this 进行推送通知。您必须在模块中导入 PushNotificationsModule
,在组件中导入 PushNotificationsService
。
在推送通知工作之前,用户必须接受 them。
组件
import { Component } from '@angular/core';
import { AngularFire, AuthProviders, AuthMethods, FirebaseListObservable } from 'angularfire2';
import { PushNotificationsService } from 'angular2-notifications';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent {
items: FirebaseListObservable<any>;
name: any;
msgVal: string = '';
constructor(
public af: AngularFire,
private _pushNotifications: PushNotificationsService) {
this._pushNotifications.requestPermission(); // requestion permission for push notification
this.items = af.database.list('/messages', {
query: {
limitToLast: 5
}
});
af.database.list('/messages', {
query: {
limitToLast: 1
}
}).subscribe((messages: Array<any>) => {
// get the last message from messages array
this._pushNotifications.create('some title', { body: 'body text' }).subscribe(
res => {
// do something
},
err => {
// do something
}
);
});
this.af.auth.subscribe(auth => {
if(auth) {
this.name = auth;
}
});
}
}
我是 angular 2 和 Firebase 的新手,但我设法创建了一个聊天应用 here,我的最终目标是在聊天中有新消息时创建推送通知应用程序。
我试过安装 this 但是安装起来非常困难,因为我看不懂文档。
我也尝试了 this thread 的解决方案。但该应用程序不会检测到通知。
关于如何解决这个问题的任何帮助?
这是我的app.component.ts
import { Component } from '@angular/core';
import { AngularFire, AuthProviders, AuthMethods, FirebaseListObservable } from 'angularfire2';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent {
items: FirebaseListObservable<any>;
name: any;
msgVal: string = '';
constructor(public af: AngularFire) {
this.items = af.database.list('/messages', {
query: {
limitToLast: 5
}
});
this.af.auth.subscribe(auth => {
if(auth) {
this.name = auth;
}
});
}
login() {
this.af.auth.login({
provider: AuthProviders.Facebook,
method: AuthMethods.Popup,
});
}
chatSend(theirMessage: string) {
this.items.push({ message: theirMessage, name: this.name.facebook.displayName});
this.msgVal = '';
}
mychange(){
console.log("change happned"); // updated value
}
}
我的 app.module 文件包含
import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { FormsModule } from '@angular/forms';
import { HttpModule } from '@angular/http';
import { AppComponent } from './app.component';
import { AngularFireModule} from 'angularfire2';
import {initializeApp,database} from 'firebase';
export const firebaseConfig = {
apiKey: "AIzaSyAQUetWt-pH-WuMTZ-lonP2ykICOl4KiPw",
authDomain: "anguchat-eb370.firebaseapp.com",
databaseURL: "https://anguchat-eb370.firebaseio.com",
storageBucket: "anguchat-eb370.appspot.com",
messagingSenderId: "267732203493"
};
initializeApp(firebaseConfig);
database().ref().on('value', function(snapshot){
var x = snapshot.val()
console.log("This prints whenever there is a new message");
});
@NgModule({
declarations: [AppComponent],
imports: [
BrowserModule,
FormsModule,
HttpModule,
AngularFireModule.initializeApp(firebaseConfig)
],
providers: [],
bootstrap: [AppComponent]
})
export class AppModule { }
我会订阅您组件中的消息数据库。如果您想使用 this 进行推送通知。您必须在模块中导入 PushNotificationsModule
,在组件中导入 PushNotificationsService
。
在推送通知工作之前,用户必须接受 them。
组件
import { Component } from '@angular/core';
import { AngularFire, AuthProviders, AuthMethods, FirebaseListObservable } from 'angularfire2';
import { PushNotificationsService } from 'angular2-notifications';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent {
items: FirebaseListObservable<any>;
name: any;
msgVal: string = '';
constructor(
public af: AngularFire,
private _pushNotifications: PushNotificationsService) {
this._pushNotifications.requestPermission(); // requestion permission for push notification
this.items = af.database.list('/messages', {
query: {
limitToLast: 5
}
});
af.database.list('/messages', {
query: {
limitToLast: 1
}
}).subscribe((messages: Array<any>) => {
// get the last message from messages array
this._pushNotifications.create('some title', { body: 'body text' }).subscribe(
res => {
// do something
},
err => {
// do something
}
);
});
this.af.auth.subscribe(auth => {
if(auth) {
this.name = auth;
}
});
}
}