TL;DR 如何让 Android 传感器永久运行/活动/注册我的应用程序,即使我关闭它?
目标:
我正在制作一个 Flutter 应用程序,它使用计步器包来计算您的步数,
该包
使用Android 的内置传感器,TYPE_STEP_COUNTER返回自上次启动(iOS)以来所采取的步数。在 Android 上,安装应用程序之前执行的任何步骤均不计算在内。
我是如何实现的:
myStepCount加 1。TYPE_STEP_COUNTER传感器应该仍然在后台运行stepCount,一旦我再次打开我的应用程序,新的和上次保存的stepCount(保存的)之间的差异使用shared_prefs)将被计算并添加到myStepCount.重要提示:即使在我锁定手机、转到主屏幕或关闭应用程序之后,
传感器TYPE_STEP_COUNTER也必须在后台永久运行/保持注册状态...
观察结果:
TYPE_STEP_COUNTER已永久注册)。myStepCount当应用程序在前台运行时采取步骤时,该值会增加。但是,一旦我再次打开应用程序,就不会添加关闭myStepCount应用程序时采取的步骤。结论:
我需要找到一种方法从我的 Flutter 应用程序注册TYPE_STEP_COUNTER传感器,并在关闭应用程序后保持其注册状态。
2 尝试过(但不成功)的解决方案:
第一次尝试: …
android-sensors sensormanager flutter pedometer flutter-method-channel
我将 iOS 升级到 16.4.1(这需要我将 XCode 升级到 14.3,这需要我将 mac 操作系统从 12 升级到 13)后,在尝试构建 iOS Flutter 应用程序时收到此错误:
\n多个命令生成 \'/Users//Library/Developer/Xcode/DerivedData/Runner-bczatismiambuefczuntppsiskse/Build/Products/Debug-iphoneos/Runner.app/Frameworks/FBSDKCoreKit.framework\'
\n目标\'Runner\'(项目\'Runner\')具有来自\'/Users//Documents/AndroidStudioProjects//ios/Pods/FBSDKCoreKit/XCFrameworks/FBSDKCoreKit.xcframework/ios-arm64/FBSDKCoreKit.framework\'的复制命令到 \'/Users/<我的名称/Library/Developer/Xcode/DerivedData/Runner-bczatismiambuefczuntppsiskse/Build/Products/Debug-iphoneos/Runner.app/Frameworks/FBSDKCoreKit.framework\'
\n该命令取决于目标\'Runner\'(项目\'Runner\')中的命令:脚本阶段\xe2\x80\x9c[CP] Embed Pods Frameworks\xe2\x80\x9d
\n我还没有添加任何新的软件包、pod、插件……就在我的 iOS 和 Mac OS(和 XCode)更新之后,我收到了这个错误。
\n我已经检查了这个 stackoverflow 问题,这对我没有帮助。
\n错误消息提到了\xe2\x80\x9c[CP] Embed Pods Frameworks\xe2\x80\x9d这里是Build PhasesXCode 中的屏幕截图:
这是我的 XCode 中“构建阶段”>“复制捆绑资源”部分的屏幕截图(如果有的话)。(Info.plist里面没有)
我的 Pod 文件:
\n# Uncomment this line to define a global platform for your project\nplatform :ios, \'13.0\'\n\n# …Run Code Online (Sandbox Code Playgroud) 我让它在 Android 上工作,WebViewWidget正确显示 html 内容,没有问题。
对于 iOS,它仅显示空白/白色。我尝试了网上人们建议的方法,即在 Info.plist 中添加几行,允许 iOS 中的 WKWebView 加载并显示 http(不安全,不仅仅是 https):
<key>io.flutter.embedded_views_preview</key>
<string>YES</string>
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
<key>NSAllowsArbitraryLoadsInWebContent</key>
<true/>
</dict>
Run Code Online (Sandbox Code Playgroud)
(^^我真的不知道这些行各自的作用)
(^^我也尝试过小写“ yes”并<true/>作为第一行的值)
我跑了flutter clean,然后flutter pub get删除了 Podfile.lock,跑了pod install很多次(在 ios 文件夹中),但我仍然无法在 iOS 上的 webview 中显示内容(它适用于 Android),只有空白区域html 内容应该出现。
值得一提的是,我既不从 http 也不从 https 获取 html,但我加载一个字符串(即 html)并将其设置如下:
String text = ...
await _controller.loadHtmlString(text);
Run Code Online (Sandbox Code Playgroud)
有没有办法欺骗 iOS 认为 html 来自 https?
这些是我在控制台中看到打印出来的一些常见消息(不是红色,只是常规颜色),并且我仅在从 android studio 运行应用程序时收到这些消息,而不是 XCode(在真正的 iOS 设备上): …