kevin's story

소개

블로그 이미지

iOS/ Mac/ Linux/ Python/ C/C++ 프로그래밍

linuxkevin

스킨

[iOS] 앱에서 Safari의 읽기 목록(Reading List)에 항목을 추가하는 방법

iOS 앱에서 Safari의 읽기 목록(Reading List)에 항목을 추가하는 방법

글쓴이 : 안경훈(kevin, linuxgood@gmail.com)


iOS와 Safari에서 사용할 수 있는 유용한 기능중에 하나인 '읽기 목록(Reading List)' 기능 이라는 기능이 있다.  

Mac OS X의 Safari 에서는 아래와 같이 현재 보고 있는 웹 페이지를 URL 입력 박스 옆의 '+' 버튼을 눌러서 저장하게 된다. 이렇게 저장된 '읽기 목록'은 본인의 Apple ID로 로그인한 iOS, Mac OS X을 사용하는 기기의 Safari 브라우저에서 모두 동일하게 볼 수 있게 된다. 

최근에 업데이트된 iOS용 twitter 앱에서는 본문에 있는 웹 페이지 링크등을 바로 '읽기 목록'에 추가할 수 있도록  아래와 같이 추가되었다.('Send to Reading List' 버튼)

이제 본인이 만든 앱에서도 링크를 'Reading List'로 추가하는 방법을 알아보자.


사용되는 API는 SafariServices framework의 SSReadingList 클래스에 포함되어 있다. https://developer.apple.com/library/ios/releasenotes/General/iOS70APIDiffs/ 를 참조하면 이 기능은 iOS 7 에서  추가되었음을 알 수 있다. 

차례대로 따라해 보겠다. 


1. Xcode 에서 아래와 같이 Single View Application을 선택한다. 


이름은 ReadingListTest02 로 했다.


2. SafariServices.framework 을 추가 한다.

프로젝트의 'Build Phases' 항목의 'Link Binary With Libraries' 의 '+' 버튼을 눌러서 추가한다. 


3. 다음은 뷰(View)에 Label 과 Button 을 생성하고 각각 'http://books.linuxgood.com' 과 'Send To Reading List' 라는 이름을 입력한다. 이번 예제에서는 'Send To Reading List' 라는 버튼을 선택하면 Label 에 입력된 주소를 Safari의 '읽기 목록(Reading List)'에 추가하도록 해보겠다. 

Label 과 Button 추가

Label과 Button 추가


Label 과 Button의 이름을 위와 같이 변경

4. 'Send To Reading List' 버튼에 이벤트('Touch Up Inside')와 sendToRedingList 라는 IBAction 함수를 생성한다. 


생성후 ViewController.h 의 코드는 아래와 같다. (함수명이 sendToRedingList 라고 만들어져 버렸네요. 다시 화면 캡쳐가 귀찮아서 그냥 씁니다. @@)

#import <UIKit/UIKit.h>


@interface ViewController : UIViewController

- (IBAction)sendToRedingList:(id)sender;

@end


5. 다시 ViewController.h 에서 SafariServices/SafariServices.h 헤더를 import 한다.

#import <UIKit/UIKit.h>

#import <SafariServices/SafariServices.h>


@interface ViewController : UIViewController

- (IBAction)sendToRedingList:(id)sender;


@end


6. 다음은 ViewController.m 파일을 열어서 'Send To Reading List' Button을 선택했을 때의 함수를 아래와 같이 작성하도록 한다. 

- (IBAction)sendToRedingList:(id)sender {

    SSReadingList * readList = [SSReadingList defaultReadingList];

    NSError * error = [NSError new];

    

    BOOL status = [readList addReadingListItemWithURL:[NSURL URLWithString:@"http://books.linuxgood.com"] title:@"diligence HOME PAGE" previewText:@"diligence HOME PAGE" error:&error];

    

    if(status)

    {

        NSLog(@"URL 읽기 목록에 추가되었다.");

    }

    else    NSLog(@"Error");

}


참고로 Reading List는 SafariService 클래스에 아래와 같이 정의되어 있다.

SafariServices

SSReadingList.h
Added SSReadingList
Added -[SSReadingList addReadingListItemWithURL:title:previewText:error:]
Added +[SSReadingList defaultReadingList]
Added +[SSReadingList supportsURL:]
Added SSReadingListErrorCode
Added SSReadingListErrorDomain
Added SSReadingListErrorURLSchemeNotAllowed
SafariServices.h

빌드후 'Send to Reading List' 버튼을 선택하면 '읽기 목록'에 위의 URL이 추가된다. 

7. 잘 추가되었는지 확인해 보자. 


시뮬레이터의 사파리 앱을 선택해서 북마크 버튼을 선택


읽기 목록이 비어 있는것을 확인


프로젝트를 빌드해서 'Send To Reading List' 버튼을 선택


다시 시뮬레이터의 사파리 앱에서 '읽기 목록'이 추가된 것을 확인


이상으로 개인이 만드는 앱에서 Safari의 '읽기 목록' 항목으로 링크를 보내는 방법을 알아 보았다.

(문서의 끝)