近日接到需求凌盯,需要接入Line登錄分享付枫,當時一愣,Line是個什么東西驰怎,網(wǎng)上一查阐滩,才發(fā)現(xiàn)自己是多么的落后,竟然不知道Line县忌,Line中文名是連我叶眉,是和Facebook、微信芹枷、QQ類似的社交。
既然有這個需求莲趣,那沒辦法鸳慈,只能硬著頭皮去搞了,之前接過FaceBook的登錄分享邀請等喧伞,所以對國外的SDK接入感覺也不會太難走芋,可是我錯了绩郎,Line接入真的不是那么一帆風順,很多坑
下載Line需要搞個國外的AppId翁逞,不然國內(nèi)是搜索不到Line下載的
需要連接VPN下載登錄
首先肋杖,進入Line開發(fā)者中心? Line官網(wǎng) 注冊? 拿到 Channel ID 和?Channel Secret
Line SDK下載位置:如下圖:
進入下圖位置,即 iOS Line接入開發(fā)文檔
根據(jù)文檔進行環(huán)境配置等挖函,
注意事項:
注冊監(jiān)聽時状植,根據(jù)文檔會有問題,當客戶端沒有安裝Line時會走web登錄怨喘,所以需要添加一個多監(jiān)聽一個web登錄回調(diào):(這個坑了我兩天津畸,web登錄一直沒回調(diào),后面自己去Line添加的庫里面找必怜,找到很多字段一個個監(jiān)聽肉拓,終于找到下面這個監(jiān)聽才能監(jiān)聽到web登錄結(jié)果)
//只有添加了這個監(jiān)聽,在沒安裝Line的情況下梳庆,web登錄才會有回調(diào)
[[NSNotificationCenter defaultCenter] addObserver:selfselector:@selector(lineAdapterAuthorizationDidChange:) name:LineAdapterUserApprovalDidFinishNotification object:nil];
Line分享只能分享文字或者圖片:(分享只有在安裝Line的情況下才可用)
//是否有安裝Line
- (BOOL)canShareToLine
{
return[[UIApplicationsharedApplication]canOpenURL:[NSURLURLWithString:@"line://"]];
}
//分享文字 ??
- (void)shareText:(NSString*)text
{
if( [selfcanShareToLine] ) {
NSString*contentKey = (__bridgeNSString*)CFURLCreateStringByAddingPercentEscapes(NULL,
(CFStringRef)text,
NULL,
(CFStringRef)@"!*'();:@&=+$,/?%#[]",
kCFStringEncodingUTF8);
NSString*contentType =@"text";
NSString*urlString = [NSStringstringWithFormat:@"line://msg/%@/%@",
contentType, contentKey];
[[UIApplicationsharedApplication]openURL:[NSURLURLWithString:urlString]];
}
}
//分享圖片
- (void)shareImage:(NSString*)imageUrl
{
if( [selfcanShareToLine] ) {
UIPasteboard*pasteboard = [UIPasteboardpasteboardWithUniqueName];
NSString*pasteboardName = pasteboard.name;
NSURL*imageURL = [NSURLURLWithString:imageUrl];
[pasteboardsetData:UIImagePNGRepresentation([UIImageimageWithData:[NSDatadataWithContentsOfURL:imageURL]])forPasteboardType:@"public.png"];
NSString*contentType =@"image";
NSString*contentKey = (__bridgeNSString*)CFURLCreateStringByAddingPercentEscapes(NULL,
(CFStringRef)pasteboardName,
NULL,
CFSTR(":/?=,!$&'()*+;[]@#"),
CFStringConvertNSStringEncodingToEncoding(NSUTF8StringEncoding));
NSString*urlString = [NSStringstringWithFormat:@"line://msg/%@/%@",
contentType, contentKey];
[[UIApplicationsharedApplication]openURL:[NSURLURLWithString:urlString]];
}
}
登錄成功之后暖途,獲取Line用戶信息:
- (void)tryApi
{
[[adaptergetLineApiClient]getMyProfileWithResultBlock:^(NSDictionary*aResult,NSError*aError)
{
if(aResult)
{
? NSString*openId = aResult[@"mid"];//Line用戶ID
? NSString*nickName = aResult[@"displayName"];//Line用戶昵稱
? NSString*imageUrl = aResult[@"pictureUrl"];//Line用戶頭像url
? //在Line頭像url后加上 @"/large" 代表取的是 200X200 的大圖,加@“/small”代表取的是51X51的小圖
? ?NSString*image = [NSStringstringWithFormat:@"%@%@", imageUrl,@"/large"];
?}
}