Разработка под iOS: как мне сократить URL из моего кода?
Я создаю приложение для iPhone, и я хотел бы включить функциональность, которая позволяет пользователям входить в твиттер и твитнуть ссылку на мое приложение. Однако, чтобы сделать это, твиту нужно будет сократить URL-адрес моего приложения в App Store. Как я могу написать код, чтобы сократить URL для твита?
Я выполнил поиск по этому вопросу и нашел учебник по iCodeBlog, а также некоторые вопросы, размещенные на SO, однако, они все либо требуют больше работы, чем я думаю, либо используют http://api.tr.im/, который больше не доступен. Я надеюсь, что есть более новый подход к этому, такой же простой, как решение iCodeBlog.
Спасибо за вашу мудрость!
7 ответов
Я просто погуглил несколько минут, потому что меня тоже интересует эта тема. И я нашел это: TinyURL API Я думаю, что это самый простой способ реализовать что-то подобное. Я думаю, что напишу небольшой класс для этого, чтобы использовать его в дальнейших проектах.:-D
Благодаря Сандро и Вудлеаду:
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 */
Вот сообщение в блоге о том, как сократить URL с помощью bit.ly
http://www.aproposmac.com/2012/01/shorten-url-using-bitly-in-objective-c.html
Вы просто делаете 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);
Очень просто..
Попробуйте этот пример. Он хорошо работает для меня.
Пример: URL Shortner в ios программно
(Или же)
Http Post Method через Google API: http://www.warewoof.com/goo-gl-url-shortener-in-ios/
Если вы решили использовать 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)
})
}
Я использую приведенный ниже код.
#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);