Локальные уведомления Flutter работают на эмуляторе, а не на реальном устройствеAndroid

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Anonymous
 Локальные уведомления Flutter работают на эмуляторе, а не на реальном устройстве

Сообщение Anonymous »

Я пробовал много способов с flutter_local_notifications, но не смог найти решение для запуска этих уведомлений на реальном устройстве.
Он отлично работает для отправки простых и периодических уведомлений, но с помощью APK-файла сборки. я не могу получать уведомления, ни простые, ни периодические.
Протестировано на двух разных устройствах Android: Android 9 и Android 14.
app/build.gradle< /p>
buildscript {
repositories {
google()
mavenCentral()
}

dependencies {
classpath 'com.android.tools.build:gradle:7.3.1'
}
}

rootProject.allprojects {
repositories {
google()
mavenCentral()
}
}

rootProject.buildDir = '../build'
subprojects {
project.buildDir = "${rootProject.buildDir}/${project.name}"
}
subprojects {
project.evaluationDependsOn(':app')
}

tasks.register("clean", Delete) {
delete rootProject.buildDir
}

app/src/build.gradle
plugins {
id "com.android.application"
id "kotlin-android"
id "dev.flutter.flutter-gradle-plugin"
}

def localProperties = new Properties()
def localPropertiesFile = rootProject.file('local.properties')
if (localPropertiesFile.exists()) {
localPropertiesFile.withReader('UTF-8') { reader ->
localProperties.load(reader)
}
}

def flutterVersionCode = localProperties.getProperty('flutter.versionCode')
if (flutterVersionCode == null) {
flutterVersionCode = '1'
}

def flutterVersionName = localProperties.getProperty('flutter.versionName')
if (flutterVersionName == null) {
flutterVersionName = '1.0'
}

def keystoreProperties = new Properties()
def keystorePropertiesFile = rootProject.file('key.properties')
if (keystorePropertiesFile.exists()) {
keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
}

android {
namespace "com.example.example"
compileSdk 34
ndkVersion "27.0.12077973"

compileOptions {
coreLibraryDesugaringEnabled true
sourceCompatibility JavaVersion.VERSION_17
targetCompatibility JavaVersion.VERSION_17
}

kotlinOptions {
jvmTarget = '1.8'
}

sourceSets {
main.java.srcDirs += 'src/main/kotlin'
}

defaultConfig {
applicationId "com.example.example"
multiDexEnabled true
minSdkVersion 21
compileSdkVersion 34
targetSdkVersion 34
versionCode 1
versionName "1.0.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}

lintOptions {
disable 'InvalidPackage'
}

signingConfigs {
release {
keyAlias keystoreProperties['keyAlias']
keyPassword keystoreProperties['keyPassword']
storeFile keystoreProperties['storeFile'] ? file(keystoreProperties['storeFile']) : null
storePassword keystoreProperties['storePassword']
}
}
buildTypes {
release {
signingConfig signingConfigs.release
}
}
}

flutter {
source '../..'
}

dependencies {
coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:1.2.2'
implementation "androidx.core:core:1.3.0"
implementation "androidx.media:media:1.1.0"
implementation "com.google.code.gson:gson:2.8.9"
implementation "androidx.window:window:1.2.0"

testImplementation 'junit:junit:4.12'
testImplementation 'org.mockito:mockito-core:3.10.0'
testImplementation 'androidx.test:core:1.2.0'
testImplementation "org.robolectric:robolectric:4.7.3"
}

Манифест Android


















android:value="To demonstrate how to use foreground services to show notifications" />




















Код уведомлений
class LocalNotification {
static final FlutterLocalNotificationsPlugin
_flutterLocalNotificationsPlugin =
FlutterLocalNotificationsPlugin();

// inititalize
static Future init() async {
const AndroidInitializationSettings
initializationSettingsAndroid =
AndroidInitializationSettings('coordinate');
final DarwinInitializationSettings
initializationSettingsDarwin =
DarwinInitializationSettings(
onDidReceiveLocalNotification: (id, title, body, payload)
=> null,
);
final LinuxInitializationSettings initializationSettingsLinux =
LinuxInitializationSettings(defaultActionName: 'Open notification');
final InitializationSettings initializationSettings =
InitializationSettings(
android: initializationSettingsAndroid,
iOS: initializationSettingsDarwin,
linux: initializationSettingsLinux);
_flutterLocalNotificationsPlugin.initialize(
initializationSettings,
onDidReceiveNotificationResponse: (details) => null,
);
await Permission.notification.request();
}

// Simple Notification
static Future showSimpleNotification({
required String title,
required String body,
required String payload,
}) async {
const AndroidNotificationDetails androidNotificationDetails =
AndroidNotificationDetails(
'channel 1',
'simple',
channelDescription: 'simple_notify',
importance: Importance.max,
priority: Priority.high,
ticker: 'ticker',
largeIcon: DrawableResourceAndroidBitmap('enthusia'),
);
const NotificationDetails notificationDetails =
NotificationDetails(android: androidNotificationDetails);
await _flutterLocalNotificationsPlugin
.show(0, title, body, notificationDetails, payload: payload);
}

// Periodic Notifications
static Future showPeriodicNotifications({
required String title,
required String body,
required String payload,
}) async {
const AndroidNotificationDetails androidNotificationDetails =
AndroidNotificationDetails('channel 2', 'periodic',
channelDescription: 'periodic_notify',
importance: Importance.max,
priority: Priority.high,
ticker: 'ticker');
const NotificationDetails notificationDetails =
NotificationDetails(android: androidNotificationDetails);
await _flutterLocalNotificationsPlugin.periodicallyShow(
1, title, body, RepeatInterval.everyMinute, notificationDetails,
androidScheduleMode: AndroidScheduleMode.exactAllowWhileIdle,
payload: payload);
}
}


Подробнее здесь: https://stackoverflow.com/questions/791 ... eal-device
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Android»