Push-уведомления из API с использованием Nativescript - PullRequest
0 голосов
/ 05 июля 2018

Я получаю все события от API в моем шаблоне. Мне нужно push-уведомление. По вашему опыту вы можете спросить меня, какой плагин очень хорош для push-уведомлений?

Я пытался это для Android:

в main-view-model.ts

import { Observable } from "tns-core-modules/data/observable";
import * as pushPlugin from "nativescript-push-notifications";

export class HelloWorldModel extends Observable {

    private pushSettings = {
        // Android settings
        senderID: "387819224537", // Android: Required setting with the sender/project number
        notificationCallbackAndroid: (stringifiedData: String, fcmNotification: any) => {
            const notificationBody = fcmNotification && fcmNotification.getBody();
            console.log(notificationBody)
            this.updateMessage("Message received!\n" + notificationBody + "\n" + stringifiedData);
        }

        // iOS settings
        // badge: true, // Enable setting badge through Push Notification
        // sound: true, // Enable playing a sound
        // alert: true, // Enable creating a alert
        // notificationCallbackIOS: (message: any) => {
        //     this.updateMessage("Message received!\n" + JSON.stringify(message));
        // }
    };

    private _counter: number;
    private _message: string;

    constructor() {
        super();
        this.message = "";
        this.updateMessage("App started.");

        let self = this;
        this.onRegisterButtonTap();
    }

    get message(): string {
        return this._message;
    }

    set message(value: string) {
        if (this._message !== value) {
            this._message = value;
            this.notifyPropertyChange("message", value);
        }
    }

    onCheckButtonTap() {
        let self = this;
        pushPlugin.areNotificationsEnabled((areEnabled: Boolean) => {
            self.updateMessage("Are Notifications enabled: " + !!areEnabled);
        });
    }

    onRegisterButtonTap() {
        let self = this;
        pushPlugin.register(this.pushSettings, (token: String) => {
            self.updateMessage("Device registered. Access token: " + token);
            // token displayed in console for easier copying and debugging durng development
            console.log("Device registered. Access token: " + token);

            if (pushPlugin.registerUserNotificationSettings) {
                pushPlugin.registerUserNotificationSettings(() => {
                    self.updateMessage("Successfully registered for interactive push.");
                }, (err) => {
                    self.updateMessage("Error registering for interactive push: " + JSON.stringify(err));
                });
            }
        }, (errorMessage: String) => {
            self.updateMessage(JSON.stringify(errorMessage));
        });
    }

    onUnregisterButtonTap() {
        let self = this;
        pushPlugin.unregister(
            (successMessage: String) => {
                self.updateMessage(successMessage);
            },
            (errorMessage: String) => {
                self.updateMessage(JSON.stringify(errorMessage));
            },
            this.pushSettings
        );
    }

    private updateMessage(text: String) {
        this.message += text + "\n";
    }

}

в app.ts

import * as application from 'application';
import firebase = require("nativescript-plugin-firebase");

firebase.init({
}).then(
    (instance) => {
        console.log("Fierbase init done!");
    },
    (error) => {
        console.log("Firebase init error: " + error);
    }
);

application.run({ moduleName: 'app-root' });

в main-page.xml

<StackLayout class="p-20">
    <Button text="Are notifications enabled?" tap="{{ onCheckButtonTap }}" android:visibility="collapsed" class="btn" />
    <Button text="Register device" tap="{{ onRegisterButtonTap }}" class="btn" />
    <Button text="Unregister device" tap="{{ onUnregisterButtonTap }}" class="btn" />
    <Label text="Log:" class="h1" />
    <ScrollView orientation="vertical">
        <Label text="{{ message }}" class="h2" textWrap="true" />
    </ScrollView>
</StackLayout>

в мобильном телефоне показать это image

Когда я пытался отправить сообщение от Почтальона, в моем приложении не показывалось никаких уведомлений. Подскажите пожалуйста, в чем проблема?

в Почтальоне я пробовал как в image:

...