Commit 36f03299 authored by Libin Lu's avatar Libin Lu

update example

parent 20eb97ec
...@@ -16,9 +16,11 @@ import { ...@@ -16,9 +16,11 @@ import {
import FCM from "react-native-fcm"; import FCM from "react-native-fcm";
require("./Listeners"); import {registerKilledListener, registerAppListener} from "./Listeners";
import firebaseClient from "./FirebaseClient"; import firebaseClient from "./FirebaseClient";
registerKilledListener();
export default class App extends Component { export default class App extends Component {
constructor(props) { constructor(props) {
super(props); super(props);
...@@ -30,6 +32,7 @@ export default class App extends Component { ...@@ -30,6 +32,7 @@ export default class App extends Component {
} }
async componentDidMount(){ async componentDidMount(){
registerAppListener();
FCM.getInitialNotification().then(notif => { FCM.getInitialNotification().then(notif => {
this.setState({ this.setState({
initNotif: notif initNotif: notif
......
...@@ -10,46 +10,53 @@ AsyncStorage.getItem('lastNotification').then(data=>{ ...@@ -10,46 +10,53 @@ AsyncStorage.getItem('lastNotification').then(data=>{
} }
}) })
FCM.on(FCMEvent.Notification, notif => { export function registerKilledListener(){
console.log("Notification", notif); // these callback will be triggered even when app is killed
if(notif.local_notification){ FCM.on(FCMEvent.Notification, notif => {
return; AsyncStorage.setItem('lastNotification', JSON.stringify(notif));
} });
if(notif.opened_from_tray){ }
return;
}
// write to local storage even when app is killed // these callback will be triggered only when app is foreground or background
AsyncStorage.setItem('lastNotification', JSON.stringify(notif)); export function registerAppListener(){
FCM.on(FCMEvent.Notification, notif => {
console.log("Notification", notif);
if(notif.local_notification){
return;
}
if(notif.opened_from_tray){
return;
}
if(Platform.OS ==='ios'){ if(Platform.OS ==='ios'){
//optional //optional
//iOS requires developers to call completionHandler to end notification process. If you do not call it your background remote notifications could be throttled, to read more about it see the above documentation link. //iOS requires developers to call completionHandler to end notification process. If you do not call it your background remote notifications could be throttled, to read more about it see the above documentation link.
//This library handles it for you automatically with default behavior (for remote notification, finish with NoData; for WillPresent, finish depend on "show_in_foreground"). However if you want to return different result, follow the following code to override //This library handles it for you automatically with default behavior (for remote notification, finish with NoData; for WillPresent, finish depend on "show_in_foreground"). However if you want to return different result, follow the following code to override
//notif._notificationType is available for iOS platfrom //notif._notificationType is available for iOS platfrom
switch(notif._notificationType){ switch(notif._notificationType){
case NotificationType.Remote: case NotificationType.Remote:
notif.finish(RemoteNotificationResult.NewData) //other types available: RemoteNotificationResult.NewData, RemoteNotificationResult.ResultFailed notif.finish(RemoteNotificationResult.NewData) //other types available: RemoteNotificationResult.NewData, RemoteNotificationResult.ResultFailed
break; break;
case NotificationType.NotificationResponse: case NotificationType.NotificationResponse:
notif.finish(); notif.finish();
break; break;
case NotificationType.WillPresent: case NotificationType.WillPresent:
notif.finish(WillPresentNotificationResult.All) //other types available: WillPresentNotificationResult.None notif.finish(WillPresentNotificationResult.All) //other types available: WillPresentNotificationResult.None
break; break;
} }
} }
}); });
FCM.on(FCMEvent.RefreshToken, token => { FCM.on(FCMEvent.RefreshToken, token => {
console.log("TOKEN (refreshUnsubscribe)", token); console.log("TOKEN (refreshUnsubscribe)", token);
this.props.onChangeToken(token); this.props.onChangeToken(token);
}); });
FCM.enableDirectChannel(); FCM.enableDirectChannel();
FCM.on(FCMEvent.DirectChannelConnectionChanged, (data) => { FCM.on(FCMEvent.DirectChannelConnectionChanged, (data) => {
console.log('direct channel connected' + data); console.log('direct channel connected' + data);
}); });
setTimeout(function() { setTimeout(function() {
FCM.isDirectChannelEstablished().then(d => console.log(d)); FCM.isDirectChannelEstablished().then(d => console.log(d));
}, 1000); }, 1000);
\ No newline at end of file }
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment