如何解决代表正在通过我的应用记录非公开事件:可以检测到那些事件吗?
| 这些通知是代表我的应用程序(实现GKSessionDelegate)记录的,我真的可以利用这些事件来帮助遇到连接问题的用户。我有什么办法可以检测到它们?委托没有任何直接引用这些事件的公共实例方法。 我希望可以为代表提供某种通用的事件收集功能。GKSessionTester[79766:307] BTM: attaching to BTServer
GKSessionTester[79766:307] <<< Session >>> +[GKBluetoothSupport _determineBluetoothStatus]: BT not available - try again later.
GKSessionTester[79766:307] BTM: posting notification BluetoothAvailabilityChangedNotification
解决方法
正如贡萨洛(Gonzalo)在评论中提到的那样,似乎发布了一个通知,名称为“1ѭ”。
可可的通知系统基于NSNotificationCenter,该中心维护一个观察者列表并根据名称(即NSStrings)转发通知。如果您致电,很有可能会收到通知:
[[NSNotificationCenter defaultCenter]
addObserver:self
selector:@selector(bluetoothAvailabilityChanged:)
name:@\"BluetoothAvailabilityChangedNotification\"
object:nil];
并实现方法:
- (void)bluetoothAvailabilityChanged:(NSNotification *)notification
{
// maybe [notification userInfo] has some useful info...
}
如果GameKit使用单独的通知中心对象,则您可能不会收到任何通知。
这算作私有API吗?我会说,这不比解析控制台输出更糟。您不是在未记录类上调用方法,而是在被动地观察以给定名称发布的通知。
当然,苹果的观点是唯一重要的观点。如果我穿上你的鞋子,我将确保:
如果从未发布过通知,则您的应用程序可以正常运行(因为将来的iOS可能不会发布该通知,或者您可能必须删除代码并在没有通知的情况下重新提交);
您的应用程序不对NSNotification的object
或其its5ѭ词典的内容进行任何假设(因为它们现在包含的内容将来可能会更改)。
或者,您可以找出一种方法来拦截自己的应用程序的STDOUT和STDERR(任何适用于通用UNIX的解决方案都可以在iOS上运行)并查看文本以获取相关的日志消息。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。