android_alarm_manager 0.4.5+3

  • Readme
  • Changelog
  • Example
  • Installing
  • 97

android_alarm_manager #

pub package

Flutter插件,用于访问Android AlarmManager服务,并在警报触发时在后台运行Dart代码.

Getting Started #

像往常一样将此插件导入到您的项目中之后,将以下内容添加到您的AndroidManifest.xml中的<manifest></manifest>标签内:

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

接下来,在<application></application>标记内,添加:

<service
    android:name="io.flutter.plugins.androidalarmmanager.AlarmService"
    android:permission="android.permission.BIND_JOB_SERVICE"
    android:exported="false"/>
<receiver
    android:name="io.flutter.plugins.androidalarmmanager.AlarmBroadcastReceiver"
    android:exported="false"/>
<receiver
    android:name="io.flutter.plugins.androidalarmmanager.RebootBroadcastReceiver"
    android:enabled="false">
    <intent-filter>
        <action android:name="android.intent.action.BOOT_COMPLETED"></action>
    </intent-filter>
</receiver>

然后在Dart代码中添加:

import 'package:android_alarm_manager/android_alarm_manager.dart';

void printHello() {
  final DateTime now = DateTime.now();
  final int isolateId = Isolate.current.hashCode;
  print("[$now] Hello, world! isolate=${isolateId} function='$printHello'");
}

main() async {
  final int helloAlarmID = 0;
  await AndroidAlarmManager.initialize();
  runApp(...);
  await AndroidAlarmManager.periodic(const Duration(minutes: 1), helloAlarmID, printHello);
}

然后,即使主应用程序结束, printHello也会每分钟(大约)运行一次. 但是, printHello将不会与主应用程序在同一隔离环境中运行. 与线程不同,隔离区不共享内存,并且隔离区之间的通信必须通过消息传递来完成(请参见此处有关隔离区的更多文档).

Using other plugins in alarm callbacks #

如果警报回调需要访问其他Flutter插件,包括警报管理器插件本身,则可能有必要告知后台服务如何初始化插件,具体取决于嵌入应用程序的Android Flutter.

Flutter Android Embedding V1 #

对于Flutter Android Embedding V1,必须向后台服务提供回调,以使用背景隔离注册插件. 这是通过为AlarmService提供回调以调用应用程序的onCreate方法来完成的. 请参阅示例的" 应用程序覆盖" .

特别是,其Application类如下:

public class Application extends FlutterApplication implements PluginRegistrantCallback {
  @Override
  public void onCreate() {
    super.onCreate();
    AlarmService.setPluginRegistrant(this);
  }

  @Override
  public void registerWith(PluginRegistry registry) {
    GeneratedPluginRegistrant.registerWith(registry);
  }
}

必须在应用程序的AndroidManifest.xml反映出来. 例如:

    <application
        android:name=".Application"
        ...

注意:不调用AlarmService.setPluginRegistrant将导致在最终触发警报时引发异常.

Flutter Android Embedding V2 (Flutter Version >= 1.12)

对于Flutter Android Embedding V2,插件通过反射在背景隔离中注册,因此不需要调用AlarmService.setPluginRegistrant .

注意:此插件与<1.12版本的Flutter上的V2嵌入不完全兼容,因为背景隔离不会自动注册插件. 可以通过运行flutter upgrade来升级到最新的Flutter版本来解决.

要获得Flutter入门方面的帮助,请查看我们的在线文档 .

有关编辑插件代码的帮助,请参阅文档 .

0.4.5+3 #

  • 解决了在后台运行时回调查找会失败的问题.

0.4.5+2 #

  • 从pubspec.yaml中删除不推荐使用的author:字段
  • 将插件迁移到pubspec平台清单.
  • 需要Flutter SDK 1.10.0或更高版本.

0.4.5+1 #

  • 松开Flutter版本限制至1.9.1. 注意:对于使用低于1.12版本的Flutter的V2 Flutter Android嵌入的应用程序,背景隔离的插件注册将无法正常工作.

0.4.5 #

  • 添加对Flutter Android嵌入V2的支持

0.4.4+3 #

  • 添加单元测试和DartDocs.

0.4.4+2 #

  • 删除AndroidX警告.

0.4.4+1 #

  • 更新和迁移iOS示例项目.
  • 定义iOS的clang模块.

0.4.4 #

  • 如果idFunction(int)类型,则将id添加到callback

0.4.3 #

  • 添加了oneShotAt方法以在给定的DateTime time运行callback .

0.4.2 #

  • 添加了对设置警报的支持,该警报在手机处于打ze模式时有效.

0.4.1+8 #

  • 在Android示例中删除对google-services的依赖.

0.4.1+7 #

  • 修复了API低于19的Android设备上可能发生的崩溃.

0.4.1+6 #

  • 将最低Flutter版本提升至1.2.0.
  • 将模板类型参数添加到invokeMethod调用.

0.4.1+5 #

  • 更新AlarmService扔PluginRegistrantException如果AlarmService.setPluginRegistrant尚未调用设置PluginRegistrantCallback. 这样可以改善省略AlarmService.setPluginRegistrant调用时看到的错误消息.

0.4.1+4 #

  • 更新了示例以消除对Firebase的依赖.

0.4.1+3 #

  • 更新README.md以包括有关设置WAKE_LOCK权限的说明.
  • 更新了示例应用程序以使用WAKE_LOCK权限.

0.4.1+2 #

  • 包括缺少的API依赖性.

0.4.1+1 #

  • 在构建时记录有关先前AndroidX迁移的更详细的警告.

0.4.1 #

  • 添加了对设置警报的支持,该警报在重新启动后仍然存在.
    • AndroidAlarmManager.oneShotAndroidAlarmManager.periodic都有一个可选的rescheduleOnReboot参数,该参数指定是否应将新警报重新安排为在重新启动后运行(默认值:false). 如果设置为false,则警报将不会在设备重新启动后继续存在.

    • 要求更新AndroidManifest.xml以包括以下条目:

       <!--Within the application tag body--> <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/> <!--Within the manifest tag body--> <receiver android:name="io.flutter.plugins.androidalarmmanager.RebootBroadcastReceiver" android:enabled="false"> <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED"></action> </intent-filter> </receiver> 

0.4.0 #

  • 零钱 . 迁移了基础AlarmService,以将BroadcastReceiver与JobIntentService结合使用,而不是通过Service来处理警报. 这要求将AndroidManifest.xml更新为包含以下条目:

          <service
              android:name="io.flutter.plugins.androidalarmmanager.AlarmService"
              android:permission="android.permission.BIND_JOB_SERVICE"
              android:exported="false"/>
          <receiver
              android:name="io.flutter.plugins.androidalarmmanager.AlarmBroadcastReceiver"
              android:exported="false"/>
    
  • 修复了由于Android 8+上的后台执行限制而导致后台服务无法启动的问题 (请参阅问题#26846 ).

  • 修复了背景隔离仍在初始化时忽略警报事件的问题. 如果背景隔离尚未完成初始化,则将警报事件排队,并在初始化完成后对其进行处理.

0.3.0 #

  • 零钱 . 从已弃用的原始Android支持库迁移到AndroidX. 这不应该导致任何功能上的变化,但是如果使用原始支持库的话,则要求使用此插件的所有Android应用程序也要迁移 .

0.2.3 #

  • 将firebase_auth从依赖关系移动到dev_dependency.

0.2.2 #

  • 例如,更新依赖项以指向firebase_auth的已发布版本.

0.2.1 #

  • 例如,更新依赖项以指向firebase_auth和google_sign_in的已发布版本.
  • 在firebase_auth上添加缺少的依赖项.

0.2.0 #

  • 零钱 . 总是为后台服务生成一个新的隔离,而不是尝试共享该应用程序拥有的现有隔离.
  • 零钱 . 删除了AlarmService.getSharedFlutterView .

0.1.1 #

  • 更新了Gradle工具以匹配Android Studio 3.1.2.

0.1.0 #

  • 零钱 . 设置SDK约束以匹配Flutter beta版本.

0.0.5 #

  • 将Android项目模板简化并升级到Android SDK 27.
  • Moved Android package to io.flutter.plugins.

0.0.4 #

  • 零钱 . 升级到Gradle 4.1和Android Studio Gradle插件3.0.1. 较早的Flutter项目也需要升级其Gradle设置才能使用此版本的插件. 说明可以在这里找到.

0.0.3 #

  • 将Firebase插件的使用添加到示例中. 现在,该示例还演示了重写应用程序的onCreate方法,以便AlarmService可以初始化插件连接.

0.0.2 #

  • 将FLT前缀添加到iOS类型.

0.0.1 #

  • 初始发行.

example/README.md

android_alarm_manager_example #

演示如何使用android_alarm_manager插件.

Getting Started #

要获得Flutter入门方面的帮助,请查看我们的在线文档 .

Use this package as a library

1. Depend on it

将此添加到包的pubspec.yaml文件中:


dependencies:
  android_alarm_manager: ^0.4.5+3

2. Install it

您可以从命令行安装软件包:

使用Flutter:


$ flutter pub get

另外,您的编辑器可能支持flutter pub get . 查看您的编辑器文档以了解更多信息.

3. Import it

现在,在Dart代码中,您可以使用:


import 'package:android_alarm_manager/android_alarm_manager.dart';
  
Popularity:
描述该程序包相对于其他程序包的受欢迎程度. [更多]
93
Health:
从静态分析得出的代码运行状况. [更多]
100
Maintenance:
反映出软件包的整洁和最新状态. [更多]
100
Overall:
以上的加权分数. [更多]
97
了解有关得分的更多信息.

我们在2020年1月21日对该程序包进行了分析,并在下面提供了得分,详细信息和建议. using: 分析已完成,状态使用以下命令 :

  • 飞镖:2.7.0
  • 高达:0.13.4
  • Flutter:1.12.13 + hotfix.5

Dependencies

Package Constraint Resolved Available
直接依赖
Dart SDK > = 2.0.0-dev.28.0 <3.0.0
flutter 0.0.0
传递依存关系
collection 1.14.11 1.14.12
meta 1.1.8
sky_engine 0.0.99
typed_data 1.1.6
vector_math 2.0.8
开发依赖
flutter_test

by  ICOPY.SITE