有没有办法知道什么时候触发applicationSignificantTimeChange?

时间:2015-10-08 12:58:28

标签: ios swift timezone

我目前正在开发一款跟踪时间的应用,但我遇到了问题。 问题是当我在我的测试设备(iphone 5c)上更改时区时,它确实会触发applicationSignificantTimeChange方法。

但问题是我想知道时区改变的确切时间

(类似于:时区在11h时更改)。有没有办法知道像消息系统或我可以在我的应用程序上检索的东西?

我认为UIApplicationSignificantTimeChangeNotification可以做到这一点,但我没有设法做到这一点,要么我没有做到这一点,要么就不可能通过此通知。

欢迎任何帮助,谢谢

1 个答案:

答案 0 :(得分:0)

不幸的是,当事件实际发生时,您不能依赖于接收消息NSDate 。如果您的应用暂停,它只会在返回前台时收到最后一个通知。您可以在传递邮件时创建applicationSignificantTimeChange:对象,但是应用程序知道更改的时间,而不是在设备上发生实际更改时。

Apple UIApplicationSignificantTimeChangeNotification州的文档:

  

<强>讨论

     

重要时间变化的例子包括到来   午夜,航空公司对时间的更新,以及对航班的更改   夏令时。委托可以实现此方法   调整显示时间或对其敏感的应用程序的任何对象   时间变了。

     

在调用此方法之前,该应用程序还会发布一个   UIApplicationSignificantTimeChangeNotification发出通知   有兴趣的对象有机会对变化做出回应。

     

如果您的应用目前暂停,则此消息将排队等候,直到您的应用为止   应用程序返回到前台,此时它将被传递。如果   发生多个时间变化,只传递最新的时间。

object也无济于事。 UIApplication属性是userInfo对象,不提供package zlib.example; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.util.Arrays; import java.util.zip.Deflater; import java.util.zip.DeflaterOutputStream; import java.util.zip.InflaterInputStream; /** * Created by keocra on 08.10.15. */ public class Main { private final static String inputStr = "Hello World!"; public static void main(String[] args) throws Exception { System.out.println("Will zlib compress following string: " + inputStr); // will compress "Hello World!" ByteArrayOutputStream baos = new ByteArrayOutputStream(); DeflaterOutputStream dos = new DeflaterOutputStream(baos); dos.write(inputStr.getBytes()); dos.flush(); dos.close(); // at this moment baos.toByteArray() holds the compressed data of "Hello World!" // will decompress compressed "Hello World!" ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray()); InflaterInputStream iis = new InflaterInputStream(bais); String result = ""; byte[] buf = new byte[5]; int rlen = -1; while ((rlen = iis.read(buf)) != -1) { result += new String(Arrays.copyOf(buf, rlen)); } // now result will contain "Hello World!" System.out.println("Decompress result: " + result); } } 对象。