近日接到需求,需要接入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"];
?}
}