NSSystemClockDidChangeNotification 是不是收到有关自动时区更新的通知(无需手动干预。例如,当用户正在旅行时)?
Posted
技术标签:
【中文标题】NSSystemClockDidChangeNotification 是不是收到有关自动时区更新的通知(无需手动干预。例如,当用户正在旅行时)?【英文标题】:Does NSSystemClockDidChangeNotification receive notification on automatic timezone updates(without manual intervention.eg when the user is travelin)?NSSystemClockDidChangeNotification 是否收到有关自动时区更新的通知(无需手动干预。例如,当用户正在旅行时)? 【发布时间】:2021-09-25 00:49:08 【问题描述】:我们能否检测到手机的时区更改和用户专门更改时间的情况? android 也有同样的问题..我在哪里使用 intent.ActionTimeChanged ?
【问题讨论】:
【参考方案1】:您需要在每个平台(ios / Android)上分别实现。
在 Android 上,您可以为Intent.ActionTimeChanged
注册一个BroadcastReceiver
(如果需要,还可以注册Intent.ActionTimezoneChanged
):
[BroadcastReceiver]
[IntentFilter(new[] Intent.ActionTimeChanged )]
public class TimeChanged : BroadcastReceiver
public override void OnReceive(Context context, Intent intent)
Console.WriteLine("Time change, do something with that knowledge");
在 iOS 上,您可以注册NSSystemClockDidChange
通知:
NSNotificationCenter.DefaultCenter.AddObserver(new NSString("NSSystemClockDidChangeNotification"), (obj) =>
Console.WriteLine("Time change, do something with that knowledge");
);
我测试了我这边的解决方案,它工作正常。
请参阅https://***.com/a/56141207/8187800。
【讨论】:
使用 NSSystemClockDidChange (iOS) 和 intent.ActionTimeChanged(android),只要用户手动更改日期/时间,就会收到通知。但是,当“系统”通过时区更改更改时间时也会收到此通知,例如当一个人前往不同的时区时?如果是这种情况,那么有没有办法忽略该事件..以便只能捕获用户所做的手动时间更改? 是的,我认为该事件仅由用户手动更改时间触发。以上是关于NSSystemClockDidChangeNotification 是不是收到有关自动时区更新的通知(无需手动干预。例如,当用户正在旅行时)?的主要内容,如果未能解决你的问题,请参考以下文章