2010-11-30 7 views
0

iPhoneでVoIPモードでソケットを設定しようとしているため、イベントが発生したときにアプリが起動する可能性があります。私はアプリケーションが目を覚まして何かについてメインのWebサービスと話す必要がある場合に限り、ソケットに書き込むシンプルなサーバーを持っています。 CFReadStreamSetProperty() をソケットに接続されたストリームに呼び出すと、常に0が返されているように見えます。誤っていない場合は、ストリームがプロパティ値を認識および/または受け入れないことを意味するFALSEです。前の質問で、この機能はシミュレータでは利用できないので、実際の電話で試したところ、同じ結果が得られました。iOS 4のソケットでVoIPモードを設定する方法

どのようにしてコールが失敗しているのか分かりますか?

コードは以下の通りです:

- (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; 
} 

答えて

0

二つの問題があったよううーん...それが見えます。まず、ストリームを開く前にプロパティを設定する必要があります。そして、第二に、あなたがこれを行うときにあなたがメインスレッドにいる場合にのみ動作するように見えます。

関連する問題