Nativescript, внедрить угловой сервис в делегат ios - PullRequest
0 голосов
/ 30 октября 2019

Я использую Angular с nativescript, и я хотел бы получить некоторые данные из API, используя Angular Service в моем проекте, и отправить локальное уведомление с этими данными. Я хотел бы выдвинуть это уведомление в фоновом режиме, используя пример, упомянутый в документации Nativescript

https://docs.nativescript.org/core-concepts/ios-runtime/how-to/BackgroundExecution.

Метод выглядит следующим образом:

import { LocalNotifications } from 'nativescript-local-notifications';

export class BackgroundRefreshAppDelegate extends UIResponder implements UIApplicationDelegate {
    public static ObjCProtocols = [UIApplicationDelegate];
    public static ObjCExposedMethods = {
        "runOnBackground": { returns: interop.types.void }
    };

    private bgTask;
    private timer;
    private timerCounter;

    public applicationPerformFetchWithCompletionHandler(application: UIApplication, completionHandler: any) {
        console.log('App is running in background');

        // Check for new data
        const newData = true;

        // If new data exists, initiate a local notification
        if (newData) {
            LocalNotifications.schedule([{
            title: 'test',
          }]).then(
              function() {
                console.log('Notification scheduled');
              },
              function(error) {
                console.log('scheduling error: ' + error);
              }
          );

            // Let the OS know that there were new data and complete the task
            completionHandler(UIBackgroundFetchResult.NewData)
        } else {
            // Otherwise, let the OS know there is no new data and complete the task
            completionHandler(UIBackgroundFetchResult.NoData);
        }

    }
}

Как можноЯ внедряю угловой сервис в этот делегат ios и использую его в методе applicationPerformFetchWithCompletionHandler?

1 Ответ

0 голосов
/ 10 ноября 2019

Вы не можете / не должны этого делать, фоновая служба запускается вне контекста Angular.

Вместо этого слушайте пользовательское событие в вашем сервисе и запускайте пользовательское событие из вашего applicationPerformFetchWithCompletionHandler.

...