Используя iChat Services и Приятелей
Эта статья описывает, как получить доступ к информации о службах iChat и приятелях из приложения Какао.
Панель Preferences в iChat используется для устанавливания различных учетных записей пользователя. Тип учетной записи указывает тип службы для учетной записи. Например, тип учетной записи для учетной записи.Mac установлен в.Mac в панели Preferences, где базовой службой является AIM. Передайте бессмысленные данные и Добрый день другие службы iChat.
Службы хранят информацию об учетной записи на сервере — информация о состоянии пользователя и приятелей пользователя. Эта та же информация доступна из приложения Какао с помощью IMService
класс. Например, можно получить псевдонимы и состояние входа в систему всех приятелей.
Остальная часть этой статьи объясняет, как получить эту информацию iChat.
Получение пользовательского состояния
Как правило, Вы используете Мгновенную платформу сообщения для простой проверки состояния iChat текущего пользователя.
Можно проверить, доступен ли пользователь, и выведите на экран надлежащий значок в приложении. Например, этот фрагмент кода использует imageNameForStatus:
метод класса следующим образом, чтобы заставить изображение состояния отображать:
NSImage *anImage = [NSImage imageNamed:[IMService imageNameForStatus:[IMService myStatus]]]; |
Можно также получить состояние и время простоя текущего пользователя. Этот фрагмент кода использует результаты myStatus
метод класса создать человекочитаемое сообщение:
NSString *message; |
switch ([IMService myStatus]){ |
case IMPersonStatusUnknown: |
message = @"Unknown"; |
break; |
case IMPersonStatusOffline: |
message = @"Offline"; |
break; |
case IMPersonStatusIdle: |
message = @"Idle"; |
break; |
case IMPersonStatusAway: |
message = @"Away"; |
break; |
case IMPersonStatusAvailable: |
message = @"Available"; |
break; |
} |
Используйте myIdleTime
метод класса получить время простоя.
Получение состояния служб
Любой данный пользователь может иметь многократные учетные записи на многократных службах — например, иметь обоих учетная запись Бессмысленных данных и.Mac. Можно использовать allServices
метод класса получить массив служб или serviceWithName:
метод класса получить определенную службу. Например, этот фрагмент кода выполняет итерации через каждую мгновенную службу сообщений:
NSEnumerator *serviceEnumerator = [[IMService allServices] objectEnumerator]; |
IMService *imservice; |
while (imservice = [serviceEnumerator nextObject]){ |
... |
} |
Как только Вы имеете IMService
объект, можно получить доступ к информации о службе с помощью многих методов. Можно использовать любого localizedName
или localizedShortName
метод для отображения человекочитаемого имени службы. Например, имя.Mac службы могло бы быть AIM
тогда как локализованное имя могло бы быть AOL Instant Messenger
. Напротив, строка, возвращенная name
метод не локализуется и должен только привыкнуть в более позднем вызове к serviceWithName:
метод.
Можно также проверить состояние самой службы, чтобы определить, зарегистрирован ли пользователь или нет. Обратите внимание на то, что myStatus
метод всегда возвращается IMPersonStatusOffline
если пользователь не регистрируется в службу. Этот фрагмент кода создает человекочитаемое сообщение, описывающее состояние службы:
NSString *message; |
switch ([service status]){ |
case IMServiceStatusLoggedOut: |
message = @"Logged Out"; |
break; |
case IMServiceStatusDisconnected: |
message = @"Disconnected"; |
break; |
case IMServiceStatusLoggingOut: |
message = @"Logging Out"; |
break; |
case IMServiceStatusLoggingIn: |
message = @"Logging In"; |
break; |
case IMServiceStatusLoggedIn: |
message = @"Logged In"; |
break; |
} |
Доступ к приятелям
Можно получить список приятелей всего пользователя и отдельной информации о каждом. Вы получаете список контактов с помощью infoForAllScreenNames
метод. Этот метод возвращает массив словарей, где каждый словарь содержит пары ключ/значение, описывающие приятеля. Например, этот фрагмент кода распечатывает псевдоним для каждого приятеля, использующего IMPersonScreenNameKey
ключ.
NSEnumerator *accountEnumerator = [[service infoForAllScreenNames] objectEnumerator]; |
NSDictionary *accountInfo; |
while (accountInfo = [accountEnumerator nextObject]){ |
// Print the account screenname |
NSLog(@"Buddy with screenname=%@", |
[accountInfo objectForKey:IMPersonScreenNameKey]); |
} |
Другие свойства приятеля являются именем, фамилией, адресом электронной почты, время простоя, занятое сообщение и данные изображения при наличии. См. Ссылку класса IMService для полного описания этих свойств.
Можно также вывести на экран изображение для состояния с помощью imageNameForStatus:
метод класса как показано в Получении Пользовательского Состояния.