Eyes, JAPAN Blog > Social.framework以外を使ってみた

Social.framework以外を使ってみた

murakami

この記事は1年以上前に書かれたもので、内容が古い可能性がありますのでご注意ください。

こんにちは、最近どこもかしこも暑くて大変ですがいかがお過ごしですか?

さて今回はちょっと需要があったので、Xcodeで提供されているSocial.framework以外を使ってTwitter周りの処理を書いてみたのでそのことについて書こうと思います。
まず今回使ったのが、STTwitterというライブラリ。リンクはこちら。Cocoapodsで検索して、頻繁に更新が行われているライブラリということで今回はこれを選びました。

なにやら検索して若干とっつきづらいライブラリだという噂を聞いて戦々恐々として使い始めたのですが、特にそういうことはなく順調に実装も完了してしまいました。確かに、機能を豊富にしている(?)せいで若干引数が多めな印象を受けましたが、慣れると便利なものだったのでよかったです。

ではでは話すのはこれくらいにして、今回これをつかってみてずっと悩んだところを紹介したいと思います。
今回TwitterのUserstreamの機能が必要だったので、このライブラリの”getUserStreamDelimited”から始まるメソッドを利用しようと考えました。それでまずはじめに以下のようなコードを、「補完された内容のみを見て」書いてみました。

[twitterAPIClient getUserStreamDelimited:[NSNumber numberWithBool:NO]
                               stallWarnings:[NSNumber numberWithBool:NO]
         includeMessagesFromFollowedAccounts:[NSNumber numberWithBool:NO]
                              includeReplies:[NSNumber numberWithBool:NO]
                             keywordsToTrack:nil
                       locationBoundingBoxes:nil
                               progressBlock:^(id response) {
                                   // 取得成功
                                   NSLog(@"progress");
 
                               } stallWarningBlock:^(NSString *code, NSString *message, NSUInteger percentFull) {
                                   NSLog(@"stall");
 
                               } errorBlock:^(NSError *error) {
                                   NSLog(@"error");
                               }];

意図していた動作は、”TwitterのUserstreamAPIに対してオプション無しでリクエストを送る”というものだったのでまず上記のようにしました。ところがここでエラーが起きてしまい、「何だ何だ」と言わんばかりに1時間。一見特に問題ないような感じでしたのでだいぶ時間をとってしまいました。
今回この問題の要因となっていたものがこれ、”[NSNumber numberWithBool:NO]”で、その情報・オプションが必要かどうかを指定するだけなのでNOでいいかと思いこのようにしていました。ですが実際これがURLとして反映されると何やら意図しないオプションが・・・

このフレームワークでもしオプションが必要ない場合は以下のようにするのが正解でした。

[twitterAPIClient getUserStreamDelimited:nil
                               stallWarnings:nil
         includeMessagesFromFollowedAccounts:nil
                              includeReplies:nil
                             keywordsToTrack:nil
                       locationBoundingBoxes:nil
                               progressBlock:^(id response) {
                                   // 取得成功
                                   NSLog(@"progress");
 
                               } stallWarningBlock:^(NSString *code, NSString *message, NSUInteger percentFull) {
                                   NSLog(@"stall");
 
                               } errorBlock:^(NSError *error) {
                                   NSLog(@"error");
                               }];

もし使う方がいらっしゃいましたらここらへんにはご注意を・・・

—–
担当 : 村上

Comments are closed.