Objective-Cで短縮URLの生成など

2012-02-10 13:22

Twitterで投稿するときなど
URL短縮を短縮したい場合はbit.lyを使うと簡単。

bit.lyでアカウントを作成して
API Keyをコピーしておく。

JSONでとってくるのでSBJSONを入れておく。
あとXCode4.2以降は例のごとくARCでなんちゃらかんちゃらなので
__bridge を入れないと怒られる。

- (NSString *)getShortUrl
{
    NSString *userName = @"USER_NAME";
    NSString *apiKey = @"API_KEY";
    NSString *escaped = (__bridge NSString *)CFURLCreateStringByAddingPercentEscapes(
        NULL,(__bridge CFStringRef)@"短縮させたいURL", NULL,(__bridge CFStringRef)@"!*'();:@&=+$,/?%#[]",kCFStringEncodingUTF8);
    NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"http://api.bit.ly/v3/shorten?&login=%@&apiKey=%@&longUrl=%@", userName, apiKey, escaped]];
    NSString *result = [NSString stringWithContentsOfURL:url encoding:NSUTF8StringEncoding error:nil];
    NSDictionary *dic = [result JSONValue];
    if ([[dic objectForKey:@"status_code"] intValue] == 200) {
        return [[dic objectForKey:@"data"] objectForKey:@"url"];
    }
    return nil;
}

エンコードの仕方、というか正規表現のとこは人によってまちまちなので
信頼をおいている人のをありがたく拝借する。

以前はgoo.glを使っていたのだけれど、
めんどくさいのでbit.lyの方が容易なのでおすすめです。

参考:bit.lyのREST APIを使って短縮URLを作成する方法(改訂版)



Category: Objective-C

Tag: ,