我正试图建立一个应用程序与Toga/Beeware,主要为Android,但理想的跨平台。我需要应用程序发送推送通知在用户指定的时间。我看到一些人之前尝试过同样的挑战,但目前没有官方文件。有人做到了吗?如果有,是怎么做到的?
这个页面有一个从Python调用Android通知API的例子:
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())
指出:
- 对于Toga,本例中的
activity
应该替换为self._impl.native
,其中self
是您的App
对象。 DEFAULT_CHANNEL
应该用类似的代码设置。activity.getString
调用可以替换为任何你想要的字符串
不幸的是,如果你的targetSdkVersion
是33或更高,这是现在默认的BeeWare Android模板的情况下,你需要在显示通知之前请求许可,我没有Python的例子。
从2023年8月开始,Google Play将要求targetSdkVersion
33或更高版本。但如果你不打算在Google Play上发布应用,你可以通过使用build_gradle_extra_content
选项来解决这个问题:
build_gradle_extra_content = "android.defaultConfig.targetSdkVersion 32"