Я пытаюсь создать приложение с Toga/Beeware, в основном для Android, но в идеале кроссплатформенное. Мне нужно, чтобы приложение отправляло push-уведомления в указанное пользователем время. Я вижу некоторые ранее пытались выполнить то же задание , но в настоящее время нет официальной документации. Кто-нибудь выполнил это? И если да, то как?
На этой странице есть пример вызова API уведомлений Android из Python:
from android.content import Context
from androidx.core.app import NotificationCompat
builder = NotificationCompat.Builder(activity, App.DEFAULT_CHANNEL)
builder.setSmallIcon(R.drawable.ic_launcher)
builder.setContentTitle(
activity.getString(R.string.demo_notify_title))
builder.setContentText(
activity.getString(R.string.demo_notify_text))
activity.getSystemService(Context.NOTIFICATION_SERVICE)\
.notify(0, builder.getNotification())
Примечания:
activity
в этом примере следует заменить на self._impl.native
, где self
— ваш объект App
.DEFAULT_CHANNEL
следует настроить с помощью кода, похожего на этот.activity.getString
можно заменить любой строкой, которую вы хотите.К сожалению, если ваш targetSdkVersion
33 или выше, что сейчас имеет место с шаблоном BeeWare Android по умолчанию, вам нужно будет запросить разрешение, прежде чем показывать уведомление, и у меня нет примера Python для этого.
targetSdkVersion
Начиная с августа 2023 года для Google Play потребуется версия 33 или выше. Но если вы не собираетесь распространять свое приложение в Google Play, вы можете обойти эту проблему, воспользовавшись опцией build_gradle_extra_content:
build_gradle_extra_content = "android.defaultConfig.targetSdkVersion 32"