こんにちはいくらです。
今回からブログを書いてみることになりました。
ブログは初めてですが、よろしくお願いします。
今僕は、サーバー通信を使ったアプリの開発をしているのですが、
そこで調べたことを書いてみようと思います。
最初はNSURLConnectionを使って実装しようとしていたのですが、
非推奨となっていましたのでシンプルに書き換えてみたいと思います。
NSURLSessionをインスタンス化するときに、デリゲートとスレッドを指定します。
・デリゲートの指定
・スレッドの指定
また、メインスレッドとサブスレッドの選択ができます。
メインスレッドで実行する場合
|
NSURLSession *session = [NSURLSession sessionWithConfiguration:sessionConfiguration delegate:self delegateQueue:[NSOperationQueue mainQueue]]; |
サブスレッドで実行する場合(デフォルト)
|
NSURLSession *session = [NSURLSession sessionWithConfiguration:sessionConfiguration]; |
最終的に下記のような感じになると思います。
|
// リクエスト作成 NSURL *url = [NSURL URLWithString:@"http://www.yahoo.co.jp/"]; NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url]; // HTTPリクエスト NSURLSessionConfiguration *sessionConfiguration = [NSURLSessionConfiguration defaultSessionConfiguration]; // サブスレッドで実行する NSURLSession *session = [NSURLSession sessionWithConfiguration:sessionConfiguration]; NSURLSessionDataTask *task = [session dataTaskWithRequest:request completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) { // ここにエラー処理などを書く // セッションの後始末 [session invalidateAndCancel]; }]; [task resume]; |
これでサーバーとの通信ができると思います。
ただし、iOS9からセキュリティが強化されてますので、アプリの設定が必要です。
詳しくは、下記のサイト様が参考になるかと思います。
- [iOS 9] iOS 9 で追加された App Transport Security の概要
- http://dev.classmethod.jp/smartphone/iphone/ios-9-intro-ats/
いかがでしょうか?
まだ手探りですが、今後もこんな感じで書いていこうかと思います。