Kivy, python Почему не отправляются уведомления?

Почему не отправляются уведомления? Где ошибка?

buildozer

requirements = python3,kivy,kivymd,requests,zbarcam,urllib3,chardet,idna,opencv-python,pillow,kivy-garden.xcamera,pyzbar,python-android,plyer,jnius
services = Myservice:service.py
android.permissions = INTERNET, CAMERA, FOREGROUND_SERVICE

service.py

from plyer import notification
from requests import get
from time import sleep
from jnius import autoclass


def get_data_by_id(department, id):
    return get(f'http://code-factory.site/api/pop_up/{department}/{id}').text.split('&')[1]

PythonService = autoclass('org.kivy.android.PythonService')
PythonService.mService.setAutoRestartService(True)

department = ''
while True:
    try:
        with open('f.txt', 'r') as file:
            department = file.readlines()[0].replace('\n', '')
    except:
        pass

    if department != '':
        for id in get(f'http://code-factory.site/api/notice/{department}').text.split(','):
            if id != '':
                name = get_data_by_id(department, id)
                notification.notify(title=name, message=name)

    sleep(3)

main.py

from kivy.app import App
from kivy.lang import Builder
from kivy.uix.screenmanager import ScreenManager, Screen
from kivy.core.window import Window
from kivy.clock import Clock
from requests import get, post
from plyer import notification
import requests
from kivy.utils import platform


Window.size = (1080, 2340)
Window.clearcolor = (0, 0.17, 0.55, 1)

end_mode = None
unit = None

try:
    with open('f.txt', 'r') as f:
        file = f.readlines()
        department = file[0].replace('\n', '')
        otk = file[1].replace('\n', '')
except:
    department = None
    otk = None

Builder.load_string(f"""
<MenuScreen>:
    BoxLayout:
        orientation: 'vertical'
        padding: 5, 5
        spacing: 5

        Button:
            text: 'ГЛАВНОЕ МЕНЮ'
            background_color: (0, 0.12, 0.52, 1)
            on_press: root.manager.current = 'select_department'
        Button:
            text: 'СКАНИРОВАНИЕ QR'
            background_color: (0, 0.12, 0.52, 1)
            on_press: root.manager.current = 'scan'

<SelectDepartmentScreen>:
    BoxLayout:
        orientation: 'vertical'
        Button:
            text: 'KM'
            background_color: (0, 0.12, 0.52, 1)
            on_press: root.save('km')
        Button:
            text: 'KMД'
            background_color: (0, 0.12, 0.52, 1)
            on_press: root.save('kmd')
        Button:
            text: 'ТМЦ'
            background_color: (0, 0.12, 0.52, 1)
            on_press: root.save('tmc')
        Button:
            text: 'ЗАГОТОВКА'
            background_color: (0, 0.12, 0.52, 1)
            on_press: root.save('zagatovka')
        Button:
            text: 'СБОРКА'
            background_color: (0, 0.12, 0.52, 1)
            on_press: root.save('sborka')
        Button:
            text: 'СВАРКА'
            background_color: (0, 0.12, 0.52, 1)
            on_press: root.save('svarka')
        Button:
            text: 'УПАКОВКА'
            background_color: (0, 0.12, 0.52, 1)
            on_press: root.save('upakovka')

<SelectOTKScreen>:
    BoxLayout:
        orientation: 'vertical'
        Button:
            text: 'Производство'
            background_color: (0, 0.12, 0.52, 1)
            on_press: root.save('not_otk')
        Button:
            text: 'ОТК'
            background_color: (0, 0.12, 0.52, 1)
            on_press: root.save('otk')

<EndScreen>:
    BoxLayout:
        orientation: 'vertical'
        md_bg_color: 0, 0, 0, 1
        Label:
            text: '0'
            id: unit
        Button:
            text: '+1'
            background_color: (0, 0.12, 0.52, 1)
            on_press: root.add(1)
        Button:
            text: '-1'
            background_color: (0, 0.12, 0.52, 1)
            on_press: root.add(-1)
        Button:
            text: 'Отправить'
            background_color: (0, 0.12, 0.52, 1)
            on_press: root.end()

<ScanScreen>:
    BoxLayout:
    #:import ZBarCam kivy_garden.zbarcam.ZBarCam
        id: box
        orientation: 'vertical'
        padding: 1, 1
        spacing: 1
        ZBarCam:
            id: qrcodecam
            padding: 0, 2, 0, 0
            size_hint: 1, 2
        Label:
            size: self.texture_size[0], 25
            id: qr_text
            text: ' '
            size_hint: .0,.8

        Button:
            text: 'РАБОТА НАЧАТА'
            background_color: (0, 0.12, 0.52, 1)
            on_press: root.server('start', True)
        Button:
            text: 'РАБОТА ПРИОСТАНОВЛЕНА -\\n           ВОЗОБНОВЛЕНА'
            background_color: (0, 0.12, 0.52, 1)
            on_press: root.server('stop', True)
        Button:
            text: 'ОБРАТНО В МЕНЮ'
            background_color: (0, 0.12, 0.52, 1)
            on_press: root.manager.current = 'menu'
        Button:
            text: 'ОТСКАНИРОВАТЬ'
            background_color: (0, 0.12, 0.52, 1)
            on_press: root.get_qr()
        Button:
            text: 'РАБОТА ЗАКОНЧЕНА'
            background_color: (0, 0.12, 0.52, 1)
            on_press: root.open_end('end')
        Button:
            id: back
            text: 'ВОЗВРАЩЕНИЕ ЗАКАЗА НА ДОРАБОТКУ'
            background_color: (0, 0.12, 0.52, 1)
            on_press: root.open_end('back')
""")

class MenuScreen(Screen):
    pass

class SelectDepartmentScreen(Screen):
    def save(self, select):
        global department
        department = select

        with open('f.txt', 'w') as file:
            file.write(f'{department}\n')

        App.get_running_app().root.current = 'select_otk'

class SelectOTKScreen(Screen):
    def save(self, select):
        global otk
        otk = select

        with open('f.txt', 'a') as file:
            file.write(f'{otk}\n')

        scan_screen = App.get_running_app().root.get_screen('scan')
        if otk == 'otk':
            scan_screen.ids['back'].opacity = 1
            scan_screen.ids['back'].disabled = False
        else:
            scan_screen.ids['back'].opacity = 0
            scan_screen.ids['back'].disabled = True

        App.get_running_app().root.current = 'menu'

class EndScreen(Screen):
    def add(self, digit):
        global unit
        self.ids['unit'].text = str(int(self.ids['unit'].text)+digit)

        if int(self.ids['unit'].text) <= 0 or int(self.ids['unit'].text) > int(unit):
            self.ids['unit'].text = str(int(self.ids['unit'].text)-digit)

    def end(self):
        global end_mode

        r = get(f'http://code-factory.site/api/give_csrf')
        csrf = r.text.split('=')[-1][1:-2]
        cookies = r.cookies.get_dict()

        if end_mode == 'end':
            add = ''
            if otk == 'otk':
                add = '_otk'

            post(f'http://code-factory.site/api/end{add}/{department}/{self.ids["unit"].text}',
                 data = {'id': App.get_running_app().root.get_screen('scan').ids['qr_text'].text.split('\n')[0], 'csrfmiddlewaretoken': csrf},
                 cookies = cookies)
        else:
            post(f'http://code-factory.site/api/back/{department}/{self.ids["unit"].text}',
                 data = {'id': App.get_running_app().root.get_screen('scan').ids['qr_text'].text.split('\n')[0], 'csrfmiddlewaretoken': csrf},
                 cookies = cookies)

        App.get_running_app().root.current = 'scan'
        App.get_running_app().root.get_screen('scan').ids['qr_text'].text = ''

class ScanScreen(Screen):
    def server(self, command, check_otk):
        r = get(f'http://code-factory.site/api/give_csrf')
        csrf = r.text.split('=')[-1][1:-2]
        cookies = r.cookies.get_dict()

        add = ''
        if check_otk and otk == 'otk':
            add = '_otk'

        post(f'http://code-factory.site/api/{command}{add}/{department}',
             data = {'id': self.ids['qr_text'].text.split('\n')[0], 'csrfmiddlewaretoken': csrf},
             cookies = cookies)

        self.ids['qr_text'].text = ''

    def open_end(self, mode):
        global end_mode, unit
        end_mode = mode

        r = get(f'http://code-factory.site/api/give_csrf')
        csrf = r.text.split('=')[-1][1:-2]
        cookies = r.cookies.get_dict()

        add = ''
        if otk == 'otk':
            add = '_otk'

        unit = int(post(f'http://code-factory.site/api/get_unit{add}/{department}',
                        data = {'id': self.ids['qr_text'].text.split('\n')[0], 'csrfmiddlewaretoken': csrf},
                        cookies = cookies).text)

        if department == 'km' or department == 'kmd':
            r = get(f'http://code-factory.site/api/give_csrf')
            csrf = r.text.split('=')[-1][1:-2]
            cookies = r.cookies.get_dict()

            add = ''
            if otk == 'otk':
                add = '_otk'

            post(f'http://code-factory.site/api/end{add}/{department}/{unit}',
                 data = {'id': self.ids['qr_text'].text.split('\n')[0], 'csrfmiddlewaretoken': csrf},
                 cookies = cookies)

            self.ids['qr_text'].text = ''
        else:
            App.get_running_app().root.current = 'end'

    def get_qr(self):
        qr = ''.join([symbol.data.decode('utf-8') for symbol in self.ids['qrcodecam'].symbols])
        self.ids['qr_text'].text = qr

class MainApp(App):
    def build(self):
        sm = ScreenManager()
        self.icon = 'bell-ring.png'
        sm.add_widget(MenuScreen(name='menu'))
        sm.add_widget(ScanScreen(name='scan'))
        sm.add_widget(SelectDepartmentScreen(name='select_department'))
        sm.add_widget(EndScreen(name='end'))
        sm.add_widget(SelectOTKScreen(name='select_otk'))

        if department == None or department == 'None' or otk == None or otk == 'None':
            sm.current = 'select_department'
        else:
            sm.current = 'menu'
        return sm

    def on_start(self):
        if platform == 'android':
            from jnius import autoclass

            service = autoclass('org.test.myapp.ServiceMyservice')
            mActivity = autoclass('org.kivy.android.PythonActivity').mActivity
            service.start(mActivity, '')

if __name__=='__main__':
    MainApp().run()

Ответы (0 шт):