WIFI経由のシリアル通信で、あるデバイスから流れてくるログ(バイナリデータ)を取得するアプリを作成しています。
(社内でのみ使用するもので、AppStoreで公開する予定はありません)
下記のコードを書いてフォアグラウンドではNSStreamでデータを取得できるようになりましたが、
この処理をバックグラウンドで実行し、常時接続で長時間(1〜3時間程度)取得できるようにしたいです。
NSURLSessionに変更し、Background Fetchでできそうかな、と思ったのですが、
ネットで見かけるサンプルではhttp通信に関するサンプルしか見当たらないのですが、
httpではないソケット通信もできるのでしょうか?
なにか参考になりそうなURLや書籍などでも結構ですので、教えていただけませんでしょうか。
よろしくお願いいたします。
<環境>
デバイス: iPad & 独自制作機器(WIFIで接続, 接続後100msecおきに約50byteのデータを送信し続ける)
OS: iOS11
Xcode: Ver9.3
// 設定例: urlStr = @"192.168.0.100", portNo = 1501 -(void) connectToServer:(NSString *)urlStr portNo: (uint) portNo { NSInputStream *_iStream; NSOutputStream *_oStream; [NSStream getStreamsToHostNamed:urlStr port:portNo inputStream:&_iStream outputStream:&_oStream]; iStream = _iStream; oStream = _oStream; [iStream setDelegate:self]; [oStream setDelegate:self]; [iStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode]; [oStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode]; [oStream open]; [iStream open]; } // NSStreamDelegate - (void)stream:(NSStream *)stream handleEvent:(NSStreamEvent)eventCode { switch(eventCode) { case NSStreamEventHasBytesAvailable: : // (省略) データ受信後の処理 break; } }
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/05/27 05:35
2018/05/27 05:51