{"id":8160,"date":"2025-02-28T16:34:53","date_gmt":"2025-02-28T07:34:53","guid":{"rendered":"https:\/\/www.lancard.com\/blog\/?p=8160"},"modified":"2025-03-12T11:22:15","modified_gmt":"2025-03-12T02:22:15","slug":"flutter_local_notifications","status":"publish","type":"post","link":"https:\/\/www.lancard.com\/blog\/2025\/02\/28\/flutter_local_notifications\/","title":{"rendered":"Android\u3067flutter_local_notifications\u3092\u4f7f\u3046"},"content":{"rendered":"\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:100%\">\nAndroid\u3067Firebase Cloud Messaging\u306e\u8868\u793a\u306b\u3001flutter_local_notifications\u3092\u4f7f\u3063\u3066\u307f\u307e\u3059\u3002<br>\u3068\u308a\u3042\u3048\u305a\u30d5\u30a9\u30a2\u30b0\u30e9\u30a6\u30f3\u30c9\u3060\u3051\u3002\n<\/div>\n<\/div>\n\n\n\n\n<!--more-->\n\n\n\n\n<div style=\"height:100px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n\n\n<h2 class=\"wp-block-heading\">Flutter\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u4f5c\u6210<\/h2>\n\n\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:100%\">\n\u524d\u56de\u540c\u69d8 flutter create\u3057\u305f\u3082\u306e\u3092\u4f7f\u3044\u307e\u3059\u3002<br>create\u304b\u3089flutterfire\u3067\u8a2d\u5b9a\u3059\u308b\u6240\u307e\u3067\u306f\u7701\u7565\u3002<br><br>flutter_local_notifications \u95a2\u9023\u306e\u30d1\u30c3\u30b1\u30fc\u30b8\u3092\u8ffd\u52a0\u3057\u307e\u3059\u3002\n<\/div>\n<\/div>\n\n\n\n\n\n<pre class=\"wp-block-code\"><code>flutter pub add firebase_core\nflutter pub add firebase_messaging\nflutter pub add flutter_local_notifications<\/code><\/pre>\n\n\n\n\n\n<h2 class=\"wp-block-heading\">\u30d5\u30a1\u30a4\u30eb\u7de8\u96c6<\/h2>\n\n\n\n\n\n<h3 class=\"wp-block-heading\">lib\/main.dart\u3092\u7de8\u96c6<\/h3>\n\n\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:100%\">\nimport\u3092\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u8ffd\u52a0\u3057\u307e\u3059\u3002<br>test202502\u306f\u3001flutter create\u6642\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u540d\u306b\u5909\u66f4\u3057\u307e\u3059\u3002\n<\/div>\n<\/div>\n\n\n\n\n\n<pre class=\"wp-block-code\"><code>import 'package:flutter\/material.dart';\nimport 'package:firebase_core\/firebase_core.dart';\nimport 'package:firebase_messaging\/firebase_messaging.dart';\nimport 'package:flutter_local_notifications\/flutter_local_notifications.dart';\nimport 'package:test202502\/firebase_options.dart';<\/code><\/pre>\n\n\n\n\nmain()\u3092\u7de8\u96c6\u3002\n\n\n\n\n<pre class=\"wp-block-code\"><code>void main() async {\n  WidgetsFlutterBinding.ensureInitialized();\n  try{\n    await Firebase.initializeApp(options: DefaultFirebaseOptions.currentPlatform); \/\/ Firebase\u306e\u521d\u671f\u5316\n\n    \/\/ get token\n    final fcmToken = await FirebaseMessaging.instance.getToken(); \/\/ FCM\u30c8\u30fc\u30af\u30f3\u306e\u53d6\u5f97\n    print('FCM Token: $fcmToken');\n\n\n    \/\/ local notificaitons\n    const AndroidNotificationChannel channel = AndroidNotificationChannel(\n      'high_importance_channel', \/\/ id\n      'High Importance Notifications', \/\/ title\n      description: 'This channel is used for important notifications.', \/\/ description\n      importance: Importance.max,\n    );\n    \/\/ init\n    final FlutterLocalNotificationsPlugin flutterLocalNotificationsPlugin = FlutterLocalNotificationsPlugin();\n    \/\/ request permission Android 13\n    await flutterLocalNotificationsPlugin.resolvePlatformSpecificImplementation&lt;\n      AndroidFlutterLocalNotificationsPlugin&gt;()?.requestNotificationsPermission();\n    \/\/ create channel\n    await flutterLocalNotificationsPlugin.resolvePlatformSpecificImplementation&lt;\n      AndroidFlutterLocalNotificationsPlugin&gt;()?.createNotificationChannel(channel);\n\n\n    \/\/ show message\n    FirebaseMessaging.onMessage.listen((RemoteMessage message) {\n      print('Fore Message notification: ${message.notification?.title} \/ ${message.notification?.body}');\n      print('Fore Message data: ${message.data}');\n      \/\/\n      RemoteNotification? notification = message.notification;\n      AndroidNotification? android = message.notification?.android;\n      if (notification != null &amp;&amp; android != null) {\n        flutterLocalNotificationsPlugin.show(\n            notification.hashCode,\n            notification.title,\n            notification.body,\n            NotificationDetails(\n              android: AndroidNotificationDetails(\n                channel.id,\n                channel.name,\n                channelDescription: channel.description,\n                \/\/icon: android.smallIcon,\n                icon: 'launch_background',\n              ),\n            ));\n      }\n    });\n    FirebaseMessaging.onMessageOpenedApp.listen((RemoteMessage message) { \/\/ \u30d0\u30c3\u30af\u30b0\u30e9\u30a6\u30f3\u30c9\n      print('Back Message notification: ${message.notification?.title} \/ ${message.notification?.body}');\n      print('Back Message data: ${message.data}');\n    });\n  }catch (e){\n    print(e);\n  }\n  \/\/ run\n  runApp(const MyApp());\n}\n<\/code><\/pre>\n\n\n\n\n\n<h3 class=\"wp-block-heading\">android\/app\/build.gradle.kts \u3092\u7de8\u96c6<\/h3>\n\n\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:100%\">\nflutter local notifications\u306e\u30da\u30fc\u30b8\u306b\u8a18\u8f09\u304c\u6709\u308b\u306e\u3067\u3059\u304ckts\u3067\u306a\u3044\u65b9\u5f0f\u306a\u306e\u3067\u3001\u305d\u306e\u307e\u307e\u3067\u306f\u99c4\u76ee\u3067\u3057\u305f\u3002<br>android{}\u30d6\u30ed\u30c3\u30af\u5185\u306e\u5404\u30d6\u30ed\u30c3\u30af\u5185\u306b\u8ffd\u52a0\u30fb\u5909\u66f4\u3057\u307e\u3059\u3002<br>isCoreLibraryDesugaringEnabled , multiDexEnabled \u306f\u7121\u3044\u306e\u3067\u8ffd\u52a0\u3001\u305d\u308c\u4ee5\u5916\u306f\u5909\u66f4\u306b\u306a\u308b\u3068\u601d\u3044\u307e\u3059\u3002\n<\/div>\n<\/div>\n\n\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/ android{}\u5185\u3067\u8ffd\u52a0\u30fb\u5909\u66f4\n   compileOptions {\n       \/\/ For AGP 4.1+\n       isCoreLibraryDesugaringEnabled = true\n       \/\/ Sets Java compatibility to Java 8\n       sourceCompatibility = JavaVersion.VERSION_1_8\n       targetCompatibility = JavaVersion.VERSION_1_8\n   }\n   kotlinOptions {\n       jvmTarget = \"1.8\"\n   }\n   defaultConfig {\n       multiDexEnabled = true\n   }<\/code><\/pre>\n\n\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:100%\">\n\u305d\u308c\u304b\u3089\u3001dependencies{}\u30d6\u30ed\u30c3\u30af\u306f\u591a\u5206\u7121\u3044\u306e\u3067\u8ffd\u52a0\u3057\u307e\u3059\u3002\n<\/div>\n<\/div>\n\n\n\n\n\n<pre class=\"wp-block-code\"><code>dependencies {\n   \/\/ For AGP 7.4+\n   coreLibraryDesugaring(\"com.android.tools:desugar_jdk_libs:2.0.3\")\n}<\/code><\/pre>\n\n\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:100%\">\n\u5f8c\u306f\u3001\u73fe\u30d0\u30fc\u30b8\u30e7\u30f3\u3067\u306f\u3001ndkVersion\u304c\u53e4\u3044\u3088\u3068Warning\u304c\u51fa\u308b\u306e\u3067\u3001\u51fa\u305f\u6700\u4f4e\u30d0\u30fc\u30b8\u30e7\u30f3\u306b\u5408\u308f\u305b\u3066\u66f8\u304d\u76f4\u3057\u307e\u3059\u3002<br>\u203bsdkVersion\u308234\u4ee5\u4e0a\u304c\u5fc5\u8981\u3067\u3059\u304c\u3001\u4eca\u306f34\u4ee5\u4e0a\u306b\u306a\u3063\u3066\u3044\u308b\u306e\u3067\u5909\u66f4\u4e0d\u8981\u306a\u3088\u3046\u3067\u3059\u3002\n<\/div>\n<\/div>\n\n\n\n\n\n<pre class=\"wp-block-code\"><code>    ndkVersion = \"27.0.12077973\"<\/code><\/pre>\n\n\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:100%\">\n<h2 class=\"wp-block-heading\">\u30d3\u30eb\u30c9<\/h2>\n\n\n\nVSCode\u3067\u30bf\u30fc\u30b2\u30c3\u30c8\u3092Android\u306b\u3057\u3066main,dart\u304b\u3089\u25b7\u3092\u62bc\u3057\u3066\u30d3\u30eb\u30c9\uff06\u30d7\u30ec\u30a4\u3002<br>\u8d77\u52d5\u5f8c\u306bPush\u901a\u77e5\u306e\u8a31\u53ef\u9078\u629e\u306e\u30c0\u30a4\u30a2\u30ed\u30b0\u304c\u51fa\u308b\u306e\u3067\u3001Allow\uff08\u8a31\u53ef\uff09\u3092\u9078\u629e\u3057\u307e\u3059\u3002<br>\u305d\u306e\u5f8c\u3001VSCode\u306e\u30b3\u30f3\u30bd\u30fc\u30eb\u306b\u51fa\u3066\u3044\u308bFCM Token\u3092\u30b3\u30d4\u30fc\u3057\u3066Push\u901a\u77e5\u3092\u884c\u3046\u3068\u3001\u901a\u77e5\u304c\u753b\u9762\u4e0a\u90e8\u306b\u8868\u793a\u3055\u308c\u307e\u3057\u305f\u3002\n<\/div>\n<\/div>\n\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/www.lancard.com\/blog\/wp-content\/uploads\/2025\/02\/image-30.png\"><img loading=\"lazy\" decoding=\"async\" width=\"361\" height=\"666\" src=\"https:\/\/www.lancard.com\/blog\/wp-content\/uploads\/2025\/02\/image-30.png\" alt=\"\" class=\"wp-image-8172\" srcset=\"https:\/\/www.lancard.com\/blog\/wp-content\/uploads\/2025\/02\/image-30.png 361w, https:\/\/www.lancard.com\/blog\/wp-content\/uploads\/2025\/02\/image-30-217x400.png 217w\" sizes=\"auto, (max-width: 361px) 100vw, 361px\" \/><\/a><\/figure>\n\n\n\n\n<a class=\"synved-social-button synved-social-button-share synved-social-size-24 synved-social-resolution-single synved-social-provider-facebook nolightbox\" data-provider=\"facebook\" target=\"_blank\" rel=\"nofollow\" title=\"Share on Facebook\" href=\"https:\/\/www.facebook.com\/sharer.php?u=https%3A%2F%2Fwww.lancard.com%2Fblog%2Fwp-json%2Fwp%2Fv2%2Fposts%2F8160&#038;t=Android%E3%81%A7flutter_local_notifications%E3%82%92%E4%BD%BF%E3%81%86&#038;s=100&#038;p&#091;url&#093;=https%3A%2F%2Fwww.lancard.com%2Fblog%2Fwp-json%2Fwp%2Fv2%2Fposts%2F8160&#038;p&#091;images&#093;&#091;0&#093;=https%3A%2F%2Fwww.lancard.com%2Fblog%2Fwp-content%2Fuploads%2F2025%2F02%2Fimage-30.png&#038;p&#091;title&#093;=Android%E3%81%A7flutter_local_notifications%E3%82%92%E4%BD%BF%E3%81%86\" style=\"font-size: 0px;width:24px;height:24px;margin:0;margin-bottom:5px;margin-right:5px\"><img loading=\"lazy\" decoding=\"async\" alt=\"Facebook\" title=\"Share on Facebook\" class=\"synved-share-image synved-social-image synved-social-image-share\" width=\"24\" height=\"24\" style=\"display: inline;width:24px;height:24px;margin: 0;padding: 0;border: none;box-shadow: none\" src=\"https:\/\/www.lancard.com\/blog\/wp-content\/plugins\/social-media-feather\/synved-social\/image\/social\/regular\/48x48\/facebook.png\" \/><\/a><a class=\"synved-social-button synved-social-button-share synved-social-size-24 synved-social-resolution-single synved-social-provider-twitter nolightbox\" data-provider=\"twitter\" target=\"_blank\" rel=\"nofollow\" title=\"Share on Twitter\" href=\"http:\/\/twitter.com\/share?url=https%3A%2F%2Fwww.lancard.com%2Fblog%2Fwp-json%2Fwp%2Fv2%2Fposts%2F8160&#038;text=Android%E3%81%A7flutter_local_notifications%E3%82%92%E4%BD%BF%E3%81%86\" style=\"font-size: 0px;width:24px;height:24px;margin:0;margin-bottom:5px;margin-right:5px\"><img loading=\"lazy\" decoding=\"async\" alt=\"twitter\" title=\"Share on Twitter\" class=\"synved-share-image synved-social-image synved-social-image-share\" width=\"24\" height=\"24\" style=\"display: inline;width:24px;height:24px;margin: 0;padding: 0;border: none;box-shadow: none\" src=\"https:\/\/www.lancard.com\/blog\/wp-content\/plugins\/social-media-feather\/synved-social\/image\/social\/regular\/48x48\/twitter.png\" \/><\/a><a class=\"synved-social-button synved-social-button-share synved-social-size-24 synved-social-resolution-single synved-social-provider-linkedin nolightbox\" data-provider=\"linkedin\" target=\"_blank\" rel=\"nofollow\" title=\"Share on Linkedin\" href=\"https:\/\/www.linkedin.com\/shareArticle?mini=true&#038;url=https%3A%2F%2Fwww.lancard.com%2Fblog%2Fwp-json%2Fwp%2Fv2%2Fposts%2F8160&#038;title=Android%E3%81%A7flutter_local_notifications%E3%82%92%E4%BD%BF%E3%81%86\" style=\"font-size: 0px;width:24px;height:24px;margin:0;margin-bottom:5px;margin-right:5px\"><img loading=\"lazy\" decoding=\"async\" alt=\"linkedin\" title=\"Share on Linkedin\" class=\"synved-share-image synved-social-image synved-social-image-share\" width=\"24\" height=\"24\" style=\"display: inline;width:24px;height:24px;margin: 0;padding: 0;border: none;box-shadow: none\" src=\"https:\/\/www.lancard.com\/blog\/wp-content\/plugins\/social-media-feather\/synved-social\/image\/social\/regular\/48x48\/linkedin.png\" \/><\/a><a class=\"synved-social-button synved-social-button-share synved-social-size-24 synved-social-resolution-single synved-social-provider-tumblr nolightbox\" data-provider=\"tumblr\" target=\"_blank\" rel=\"nofollow\" title=\"Share on tumblr\" href=\"https:\/\/tumblr.com\/share?s=&#038;v=3&#038;t=Android%E3%81%A7flutter_local_notifications%E3%82%92%E4%BD%BF%E3%81%86&#038;u=https%3A%2F%2Fwww.lancard.com%2Fblog%2Fwp-json%2Fwp%2Fv2%2Fposts%2F8160\" style=\"font-size: 0px;width:24px;height:24px;margin:0;margin-bottom:5px;margin-right:5px\"><img loading=\"lazy\" decoding=\"async\" alt=\"tumblr\" title=\"Share on tumblr\" class=\"synved-share-image synved-social-image synved-social-image-share\" width=\"24\" height=\"24\" style=\"display: inline;width:24px;height:24px;margin: 0;padding: 0;border: none;box-shadow: none\" src=\"https:\/\/www.lancard.com\/blog\/wp-content\/plugins\/social-media-feather\/synved-social\/image\/social\/regular\/48x48\/tumblr.png\" \/><\/a><a class=\"synved-social-button synved-social-button-share synved-social-size-24 synved-social-resolution-single synved-social-provider-mail nolightbox\" data-provider=\"mail\" rel=\"nofollow\" title=\"Share by email\" href=\"mailto:?subject=Android%E3%81%A7flutter_local_notifications%E3%82%92%E4%BD%BF%E3%81%86&#038;body=%E3%82%B7%E3%82%A7%E3%82%A2%E3%81%99%E3%82%8B%EF%BC%9A:%20https%3A%2F%2Fwww.lancard.com%2Fblog%2Fwp-json%2Fwp%2Fv2%2Fposts%2F8160\" style=\"font-size: 0px;width:24px;height:24px;margin:0;margin-bottom:5px\"><img loading=\"lazy\" decoding=\"async\" alt=\"mail\" title=\"Share by email\" class=\"synved-share-image synved-social-image synved-social-image-share\" width=\"24\" height=\"24\" style=\"display: inline;width:24px;height:24px;margin: 0;padding: 0;border: none;box-shadow: none\" src=\"https:\/\/www.lancard.com\/blog\/wp-content\/plugins\/social-media-feather\/synved-social\/image\/social\/regular\/48x48\/mail.png\" \/><\/a>","protected":false},"excerpt":{"rendered":"<p>Android\u3067Firebase Cloud Messaging\u306e\u8868\u793a\u306b\u3001flutter_local_notifications\u3092\u4f7f\u3063\u3066\u307f\u307e\u3059\u3002\u3068\u308a\u3042\u3048\u305a\u30d5\u30a9\u30a2\u30b0\u30e9\u30a6\u30f3\u30c9\u3060\u3051\u3002<\/p>\n","protected":false},"author":17,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[232],"tags":[],"class_list":["post-8160","post","type-post","status-publish","format-standard","hentry","category-firebase"],"_links":{"self":[{"href":"https:\/\/www.lancard.com\/blog\/wp-json\/wp\/v2\/posts\/8160","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.lancard.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.lancard.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.lancard.com\/blog\/wp-json\/wp\/v2\/users\/17"}],"replies":[{"embeddable":true,"href":"https:\/\/www.lancard.com\/blog\/wp-json\/wp\/v2\/comments?post=8160"}],"version-history":[{"count":23,"href":"https:\/\/www.lancard.com\/blog\/wp-json\/wp\/v2\/posts\/8160\/revisions"}],"predecessor-version":[{"id":8185,"href":"https:\/\/www.lancard.com\/blog\/wp-json\/wp\/v2\/posts\/8160\/revisions\/8185"}],"wp:attachment":[{"href":"https:\/\/www.lancard.com\/blog\/wp-json\/wp\/v2\/media?parent=8160"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.lancard.com\/blog\/wp-json\/wp\/v2\/categories?post=8160"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.lancard.com\/blog\/wp-json\/wp\/v2\/tags?post=8160"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}