Я играю с 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>