Родной скрипт на Wear OS 2 - PullRequest
       20

Родной скрипт на Wear OS 2

0 голосов
/ 26 октября 2019

Я играю с NativeScript на Wear OS2.

Я просто взял NS HelloWorld (машинопись без фреймворка) и добавил плагин Firebase, чтобы получить простой текст из уведомления и отобразить его в текстовом поле.

Все в порядке, кроме случаев, когда приложение возобновляет работу из фона, в этом случае пользовательский интерфейс не отображает изменение текста.

Отладка, я вижу полезную нагрузку уведомлений, подходящую к моему экземпляру страницы машинописного текста,ошибок нет ... Но пользовательский интерфейс не отображает его.

Если я запускаю одно и то же приложение на телефоне, все работает, как и ожидалось, и восстанавливается из фона. Тот же код, без разницы в одну строку.

Мне интересно, поддерживает ли NativeScript Wear OS ...

Есть мысли по этому поводу?

Спасибо, Фабио.


Некоторый код ...

// main-page.ts

export function navigatingTo(args: EventData) {
     //here Firebase is already init, all right...
    (<Page>args.object).bindingContext = (new ViewModel).init();
}

// view-model.ts

import { Observable } from "tns-core-modules/data/observable";
import { NotificationService } from "./notification-service";

export class ViewModel extends Observable {

    private _message: string = "Waiting message...";

    init(): ViewModel {
        //this callback is always invoked as expected
        //also when the app is killed and comes back to life
        NotificationService.onMessage = (firebaseMessage: any) => {
            const text = firebaseMessage['text'] || firebaseMessage['data']['text'];

            console.log('text' + text);
            this.message = text; //that's okay, see setter below
        }

        return this;
    }

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

    set message(value: string) {
        if (this._message !== value) {
            this._message = value;

            //to this point the UI should update... BUT
            //it works only IF the app is in foreground
            //AND was never killed/backgrounded before.
            //(bug on wear-os only)
            this.notifyPropertyChange("message", value);
        }
    }
}

// main-page.xml

<Page xmlns="http://schemas.nativescript.org/tns.xsd" navigatingTo="navigatingTo" class="page">

    <StackLayout class="p-20">
        <Label text="{{ message }}" class="h2 text-center" textWrap="true" />
    </StackLayout>
</Page>
...