2016-09-21 3 views
0

В Ionic 2 я пытаюсь обработать событие, когда пользователь в настоящее время находится в приложении, чтобы я мог выпустить предупреждающее сообщение и перейти к другому представлению. В моем App конструктор, у меня есть следующий код:Обращение с Push-уведомлениями, когда приложение открыто в Ionic 2

export class MyApp { 
    private rootPage: any; 

    constructor(private platform: Platform, private app: App, private push: Push) { 
    if (UserService.isLoggedIn()) { this.rootPage = PickupPage; } 
    else { this.rootPage = LoginPage; } 

    console.log('We are here! We are here! We are here!'); 
    platform.ready().then(() => { 
     // Okay, so the platform is ready and our plugins are available. 
     // Here you can do any higher level native things you might need. 
     console.log('Registering notifications handler'); 
     this.push.rx.notification().subscribe(msg => { 
     alert(msg.title); 
     console.log('Got something!'); 
     console.dir(msg); 
     }); 
     StatusBar.styleDefault(); 
    }); 
    } 
} 

Когда я отправить уведомление, на Android я получаю уведомление приходя в ниспадающем баре на Android, но нет консоли или предупреждение внутри приложения и на iOS Я просто ничего не получаю. Отсутствие сообщения консоли или предупреждения и уведомления в центре уведомлений.

§ ionic -v 
2.0.0-beta.37 

ответ

0

Похоже, что я должен был добавить senderID в CloudSettings в push.pluginConfig.android.senderID работать, как следует:

const cloudSettings: CloudSettings = { 
    'core': { 'app_id': '***' }, 
    'push': { 
    'sender_id': '***', 
    'pluginConfig': { 
     'ios': { 'badge': true, 'sound': true }, 
     'android': { 'senderID': '***', 'iconColor': '#d1b561' } 
    } 
    } 
} 

Не уверен, что это 100% ответ, как это кажется, как CloudSettings объект Безразлично 't нравится быть измененным после того, как приложение установлено.

Редактировать

Похоже, я получил все работало немного дальше. Согласно документации, вы должны позвонить по телефону this.push.register() при открытии приложения. Я обнаружил, что обновленный конструктор моего приложения в app.ts к следующему, нажмите уведомления появляются гораздо стабильнее:

platform.ready().then(() => { 
    // Register to receive push notifications 
    this.push.register().then((token: PushToken) => { 
    // Send the token to Ionic cloud so we can send to it through the API 
    return this.push.saveToken(token) 
    }); 
    // Setup our handler so we can perform actions on push notifications 
    this.push.rx.notification().subscribe(msg => { 
    console.log(`Received ${msg.title}: ${msg.message}`); 
    if (msg.app.asleep || msg.app.closed) { 
     // The app is being opened from a notification 
    } else { 
     // The app was already open when the notification was received 
    } 
    }); 
    ... 
}); 
+0

, если вы в состоянии сделать толчок уведомление, пожалуйста, обновить свой ответ, потому что многие люди, как я изо всех сил в нажимной уведомления –

+0

@mohangopi Я обновил ответ. Я не могу отметить это как ответ до завтра. Кажется, что вы должны регистрироваться для уведомлений каждый раз, когда приложение открыто. Я еще не выкопал все еще, чтобы понять все, но вот код для 'register' https://github.com/driftycoionion-cloud/blob/master/src/push/push.ts#L214 –

Смежные вопросы