Как установить режим VoIP на сокете в iOS 4 - PullRequest
0 голосов
/ 01 декабря 2010

Я пытаюсь настроить сокет в режиме VoIP на iPhone, чтобы мое приложение могло проснуться, когда произойдет событие.У меня есть простой сервер, который будет писать в сокет, если и только если приложение должно проснуться и поговорить с основным веб-сервисом о чем-то.Вызов CFReadStreamSetProperty () для потока, подключенного к сокету, всегда возвращает ноль, что, если я не ошибаюсь, - FALSE, то есть поток не распознал и / или не принял значение свойства.В предыдущем вопросе я читал, что это средство недоступно на симуляторе, поэтому я попробовал его на реальном телефоне с тем же результатом.

Как я могу выяснить, почему сбой вызова?

Код ниже:

- (id) init {
    NSLog(@"NotificationClient init, host = %@", [self getNotificationHostName]);
    CFHostRef notificationHost = CFHostCreateWithName(kCFAllocatorDefault, (CFStringRef)[self getNotificationHostName]);
    CFStreamCreatePairWithSocketToCFHost(kCFAllocatorDefault, notificationHost, [self getNotificationPort], &_fromServer, &_toServer);
    BOOL status;
    status = CFReadStreamOpen(_fromServer);
    status = CFReadStreamSetProperty(_fromServer, kCFStreamNetworkServiceType, kCFStreamNetworkServiceTypeVoIP);
    NSLog(@"status from setting VoIP mode on socket is %d", status);
    status = CFWriteStreamOpen(_toServer);
    [self sendMessage:@"STRT" withArgument:@"iPhone"];
    [self startReceivingMessages];
    return self;
}

1 Ответ

0 голосов
/ 01 декабря 2010

Хм ... похоже, было две проблемы.Во-первых, вам нужно установить свойство перед открытием потока.И, во-вторых, похоже, что это работает, только если вы делаете это в главном потоке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...