我已经设置了一个支持GCM的Android应用程序,并且有一个小测试应用程序可以向应用程序发送一个消息.当我在模拟器中运行App时,我可以看到(通过记录msgs)它向GCM注册并获得令牌.
然后,当我将令牌放入我的测试应用程序并让它发送一个消息时,结果显示发送了1 msg,0次失败,0次更改了ID.
有时,msg几乎立即出现,有时需要20分钟.星期五,我的2个测试消息花了15分钟和20分钟.我今天早上发送的前2个是立即的,下一个还没有出现 - 它只有10分钟......
有什么办法可以让交货时间一直很快吗?随机的20分钟延迟将是一个非常不可接受的条件.
我们的应用似乎是半随机挂在psynch_mutexwait.它似乎与更新存储在CoreData中的大量数据的后台进程有关 - 但我完全无法弄清楚是谁锁定导致死锁的原因.
以下是lldb给我的完整堆栈跟踪 - 这显然是不完整的,并且线程1的最后一帧是伪造的.在那之前,我在该方法中有一个断点,它从未被击中过.
是否有任何方法可以确定正在等待什么锁?(或者甚至获得正确的堆栈跟踪?)当然,涉及很多代码,这使得随机NSLog语句成为一项艰巨的任务.
(lldb) bt all
* thread #1: tid = 0x2503, 0x39da20fc libsystem_kernel.dylib`__psynch_mutexwait + 24, stop reason = signal SIGSTOP
frame #0: 0x39da20fc libsystem_kernel.dylib`__psynch_mutexwait + 24
frame #1: 0x39ceb128 libsystem_c.dylib`pthread_mutex_lock + 392
frame #2: 0x00022068 OnDeck`-[AttendanceWorkoutsController buildTable](self=0x00000003, _cmd=0x00000000) + 508 at AttendanceWorkoutsController.m:100
thread #2: tid = 0x2803, 0x39d92648 libsystem_kernel.dylib`kevent64 + 24
frame #0: 0x39d92648 libsystem_kernel.dylib`kevent64 + 24
frame #1: 0x39ccb4f0 libdispatch.dylib`_dispatch_mgr_invoke + 796
thread #5: tid = 0x2b03, 0x39d91eb4 libsystem_kernel.dylib`mach_msg_trap + 20
frame #0: 0x39d91eb4 …Run Code Online (Sandbox Code Playgroud) OSX上的Java 6/7中存在一个错误,在拖放操作期间,它会忽略META(CMD)密钥.(Ctrl键在Windows上运行正常,在OSX上也忽略Ctrl键)我真的需要这个工作.
我尝试将KeyEventDispatcher侦听器添加到KeyboardFocusManager,但在Drag操作期间不会调用它.
也不会调用父JPanel的processKeyEvent()方法.
那么,有什么地方可以放钩来检测META按键吗?
我正在尝试修改使用java SimpleFormatter的logging.properties文件.我可以设置
java.util.logging.SimpleFormatter.format =""属性,但是我找不到关于你可以放入什么内容的文档.我找到了几个例子,但没有一个例子告诉我可能性是什么.他们只是说"%4 $ s:%5 $ s [%1 $ tc]%n"就是这样的.我希望某些文档存在于某个地方.
我正在运行XCode 4.5.2并且遇到了使symbolicatecrash工作的问题.
请注意,这适用于我的系统上未生成且不在存档中的应用程序和dsym.
到目前为止,我已经:
这没有创建"test.txt".它似乎根本无法找到任何符号.它为每个模块报告这样的事情:
...........fetching symbol file for CoreFoundation--[undef]
Searching []...-- NO MATCH
Searching in Spotlight for dsym with UUID of e30fc309df7b3c9f8ac57f0f6047d65f
Running mdfind "com_apple_xcode_dsym_uuids == E30FC309-DF7B-3C9F-8AC5-7F0F6047D65F"
@dsym_paths = ( )
@exec_names = ( )
Did not find executable for dsym
## Warning: Can't find any unstripped binary that matches version of /System/Library/Frameworks/CoreFoundation.framework/CoreFoundation
Run Code Online (Sandbox Code Playgroud)
请注意,应用包与mSYM包位于同一目录中.我也尝试将symbolicatecrash添加到我的路径,并从.dSYM和.app所在的目录执行.这没有任何区别.
有关如何使其工作的任何建议?
我们为推送通知设置了 2 个应用程序。(甲和乙)
每个(当然)都有不同的配置文件,我们为每个生成了单独的证书。App A 收到推送通知就好了,App B 没有。
两者都在与同一台服务器交谈 - 它确实确定了它正在向哪个应用程序发送通知并使用正确的证书。
我注意到,如果您在一台设备上安装这两个应用程序,它们都会获得相同的令牌(我们的服务器会跟踪每个应用程序)。在这种情况下,当服务器发送 msg 时,它会将其发送两次到同一个令牌 - 每个证书一次。App A 会收到消息,App B 不会。
向两个应用程序发送消息时,Apple 服务器响应所有消息都已正确发送,没有错误。但是消息永远不会出现在一个应用程序中。
关于在哪里看的任何建议?
我们有一堆不同类型的 NSManagedObjects。其中一些具有其他 NSManagedObjects 的 NSSet 成员。问题是我真的需要覆盖集合中对象的哈希和 isEquals 方法 - 但它们是 NSManagedObjects。我在获取集合中的多个相同对象时遇到问题。据我所知,由于哈希默认为对象地址 - 所有对象都不同。所以我需要覆盖 hash 和 isEquals - 但看不到任何方法。
我们拥有的是系统中的一堆东西,更多的东西是通过 XML 进来的——有时是现有对象的重复。当它们相同时,我不希望将重复添加到集合中。
我有一些使用javax.crypto.Cipher的加密代码,当我像这样加密时,可以正常工作:
byte[] data = cipher.doFinal(srcdata); // srcdata is a byte[]
Run Code Online (Sandbox Code Playgroud)
但是我遇到了多个字节[]想要作为一个块加密的情况。所以我尝试了这个:
for (byte[] block : blocks) {
cipher.update(block);
}
byte[] data = cipher.doFinal();
Run Code Online (Sandbox Code Playgroud)
当我解码该结果时,出现以下错误:
javax.crypto.BadPaddingException: Given final block not properly padded
at com.sun.crypto.provider.CipherCore.doFinal(CipherCore.java:811)
at com.sun.crypto.provider.CipherCore.doFinal(CipherCore.java:676)
at com.sun.crypto.provider.AESCipher.engineDoFinal(AESCipher.java:313)
at javax.crypto.Cipher.doFinal(Cipher.java:2131)
Run Code Online (Sandbox Code Playgroud)
阅读Cipher的Java文档,看来应该可以使用。
我究竟做错了什么?