代表正在通过我的应用记录非公开事件:可以检测到那些事件吗?

问题描述

| 这些通知是代表我的应用程序(实现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上运行)并查看文本以获取相关的日志消息。     

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...