Разработка под iOS: как мне сократить URL из моего кода? - PullRequest
8 голосов
/ 22 января 2011

Я создаю приложение для iPhone, и я хотел бы включить функциональность, позволяющую пользователям входить в твиттер и твитнуть ссылку на мое приложение.Однако, чтобы сделать это, твиту нужно будет сократить URL-адрес моего приложения в App Store.Как я могу написать код для сокращения URL для твита?

Я выполнил поиск по этому вопросу и нашел учебник по iCodeBlog , а также некоторые вопросы, размещенные наТак что , однако, все они либо требуют больше работы, чем я думаю, либо используют http://api.tr.im,, который больше недоступен.Я надеюсь, что есть более новый подход к этому, такой же простой, как решение iCodeBlog.

Спасибо за вашу мудрость!

Ответы [ 7 ]

19 голосов
/ 22 января 2011

Я просто гуглю несколько минут, потому что меня тоже интересует эта тема. И я нашел это: TinyURL API Я думаю, что это самый простой способ реализовать что-то подобное. Я думаю, что напишу небольшой класс для этого, чтобы использовать его в дальнейших проектах. : -D

13 голосов
/ 19 ноября 2013

Благодаря Сандро и Вудлеаду:

NSString *apiEndpoint = [NSString stringWithFormat:@"http://tinyurl.com/api-create.php?url=%@",active_content_url];
NSString *shortURL = [NSString stringWithContentsOfURL:[NSURL URLWithString:apiEndpoint]
                                                  encoding:NSASCIIStringEncoding
                                                     error:nil];
/* use shortURL */
3 голосов
/ 15 февраля 2012

Вот сообщение в блоге о том, как сократить URL с помощью bit.ly

http://www.aproposmac.com/2012/01/shorten-url-using-bitly-in-objective-c.html

3 голосов
/ 22 января 2011

Вы просто делаете HTTP-запрос к выбранной вами Службе.Я выбрал l.pr в этом примере.Многие другие сервисы имеют такой простой API.Волшебство здесь в методе, который является частью NSString.Этот метод называется stringWithContentsOfURL.Это легко позволит вам захватить текст любого удаленного источника.

Например:

NSString *url    = @"http://woodleader.org";
NSString *apiEndpoint = [NSString stringWithFormat:@"http:/api.l.pr/shorten?apikey=axbymc46859i685jfk9fk&longurl=%@",url];
NSString *shortURL = [NSString stringWithContentsOfURL:[NSURL URLWithString:apiEndpoint]
         encoding:NSASCIIStringEncoding
         error:nil];
NSLog(@"Long: %@ - Short: %@",url,shortURL);
2 голосов
/ 23 апреля 2014

Очень просто ..

Попробуйте этот пример. Он хорошо работает для меня.

Пример: URL Shortner в ios программно

(или)

Http Post Method через Google API: http://www.warewoof.com/goo-gl-url-shortener-in-ios/

1 голос
/ 21 июля 2016

Я использую приведенный ниже код.

    #define BITLY_LOGIN     @"pooja12"
    #define BITLY_APIKEY    @"R_c7045505f04343a7833721225740215c"
- (NSString *) shortURL {
        NSString *uri = [self absoluteString];
            NSString *fmt = [NSString stringWithFormat: @"http://api.bitly.com/v3/shorten?login=%@&apiKey=%@&longUrl=%@&format=txt", BITLY_LOGIN, BITLY_APIKEY, uri];
            NSURL *requestUrl = [NSURL URLWithString: fmt];
            //NSString *shortUri = [NSString stringWithContentsOfURL: requestUrl];
            //NSString *shortUri = [NSString stringWithContentsOfURL: requestUrl];
            NSError *error = nil;
            NSString *shortUri = [NSString stringWithContentsOfURL:requestUrl encoding:NSUTF8StringEncoding error:&error];
            shortUri = [shortUri stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
}
// here i call the above methods

      NSURL *shareUrl = [NSURL URLWithString:@"-url-"];
      NSString *shortenStr = [shareUrl shortURL];
      NSLog(@"Short url is %@", shortenStr);
1 голос
/ 22 мая 2015

Если вы решили использовать Google Shortener API, то это может быть ответом. Они используют AFNetworking, написанный на Swift, для сокращения URL. Пример кода следующий:

func getShorURLFromGoogle(longURL: String) {
    let manager = AFHTTPRequestOperationManager()
    manager.requestSerializer = AFJSONRequestSerializer() as AFJSONRequestSerializer
    let params = [
        "longUrl": longURL
    ]
    let appDelegate = UIApplication.sharedApplication().delegate as AppDelegate
    manager.POST("https://www.googleapis.com/urlshortener/v1/url?key=\(appDelegate.googleMapsApiKey)", parameters: params, success: {
        (operation: AFHTTPRequestOperation!,responseObject: AnyObject!) in
        if let responseObject = responseObject as? NSDictionary {
            //println(responseObject["id"] as String)
            self.shortURL = responseObject["id"] as? String //That's what you want  
        }
        },
        failure: { (operation: AFHTTPRequestOperation!,error: NSError!) in
            println("Error while requesting shortened: " + error.localizedDescription)
    })
} 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...