Flutter local notification

 

1. 안드로이드 설정

 - 앱 아이콘 넣기 : 

android - app - src - main - res - drawable - app_icon.png

android - app - src - main - res - drawable - sample_large_icon.png

android - app - src - main - res - drawable - secondary_icon.png

 - 사운드 파일 넣기

android - app - src - main - res - raw - slow_spring_board.mp3 (raw 폴더 새로 생성)

 - android - app - src - main - AndroidManifest.xml

<!-- The INTERNET permission is required for development. Specifically,

     flutter needs it to communicate with the running application

     to allow setting breakpoints, to provide hot reload, etc.

-->

<uses-permission android:name="android.permission.INTERNET"/>

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>

<uses-permission android:name="android.permission.VIBRATE" />

<uses-permission android:name="android.permission.WAKE_LOCK" />

 

<receiver android:name="com.dexterous.flutterlocalnotifications.ScheduledNotificationReceiver" />

<receiver android:name="com.dexterous.flutterlocalnotifications.ScheduledNotificationBootReceiver">

    <intent-filter>

        <action android:name="android.intent.action.BOOT_COMPLETED"></action>

    </intent-filter>

</receiver>

 

2. 아이폰 설정

 - ….

 

*** notification 관련 이상현상 임시 방편으로 해결

// 이상 현상: 알람 설정 클릭 후 앱 종료 후 알람 아이콘 클릭해서 앱으로 오고나면,

// settings 화면으로 못가고 settings 화면으로 가자마자 초기 화면으로 유도됨.

// 테스트 결과: 앱이 실행되어 있는 상태에서는 이상 없음.

// 앱이 종료된 상태에서 아래 method가 실행되면, 설정한 화면으로 제대로 이동하지 못하고,

// 앱이 실행된 후 Settings 화면으로 가는 순간 설정한 화면으로 보내지나,

// noti 관련 모듈은 앱이 실행되어 있던 상태에서 이동한 것과 같은 제대로 된 응답을

// 받지는 못하기 때문에, Settings 화면으로 갈 때마다 계속 네비게이션을 작동시킴.

// 따라서 아래 네비게이션 설정을 Settings 화면으로 설정하면, Settings 화면으로

// 이동시 계속 Settings 화면으로 이동키시려는 시도가 반복되어 앱이 다운되고,

// Settings가 아닌 다른 화면으로 설정하면, Settings 화면으로 이동시 바로 다른 화면으로

// 이동시키기 때문에 Settings 화면으로 이동할 수 없게됨.

// 따라서, 앱에서 인식하지 못하는 화면으로 이동하도록 설정하면, niti 클릭시 초기에는

// 홈화면으로 이동하고, 그 후 Settings 화면 이동을 누르면 Settings 화면으로 이동 후

// 바로 다른 화면으로 이동시키려하지만 모르는 화면이므로 실패하고 Settings 화면에 머무르게 됨.

// 일단 임시 방편으로 앱이 모르는 스크린 이름으로 지정해서 해결함.

패키지 개발자 해결 방법 ==> MaikuB commented on 26 Sep 2018

I've release a new version of the plugin (0.3.8) that adds a getNotificationAppLaunchDetails()that you could use in the main function as I mentioned above so that you can change the default/home route. The select notification callback will still be called but you could use the results of the previous method to prevent it from running code (e.g. navigating to another screen) if needed. Try it out and see how you go

 

Future<NotificationAppLaunchDetails> getNotificationAppLaunchDetails() async {

  var result = await _channel.invokeMethod('getNotificationAppLaunchDetails');

  return NotificationAppLaunchDetails(result['notificationLaunchedApp'],

      result.containsKey('payload') ? result['payload'] : null);

}

 

var notificationAppLaunchDetails =

    await flutterLocalNotificationsPlugin.getNotificationAppLaunchDetails();

 

// 노티피케이션 플러그인 설정을 main.dart 에서 해주어야 앱 종료 후 네비게이션시 반복 네비게이션을 피할 수 있고, 이 때는 main.dart 내에서 네비게이션이 네비게이션 정보를 담은 context를

받지 못하는 문제가 발생하는데 이는 네이게이터 글로벌 키 설정으로 해결함.

class _MyAppState extends State<MyApp> {

  final GlobalKey<NavigatorState> navigatorKey = GlobalKey(debugLabel: "Main Navigator");

 

 

child: MaterialApp(

  navigatorKey: navigatorKey,

 

navigatorKey.currentState.push(MaterialPageRoute(builder: (context) => ShareScreen()));

'플러터(Flutter) > 플러터 패키지(Flutter Package)' 카테고리의 다른 글

Admob test device registration  (0) 2020.05.11
geolocator  (0) 2020.03.19
audio player  (0) 2020.03.18
Dart Package  (0) 2020.03.18

+ Recent posts