1
2
3
target '{Your_Application}' do
pod 'NuguClientKit'
end
iOS Nugu SDK 는 1.2.8 이상에서 다양한 인터페이스와 안정성을 보장합니다.
iOS12 이상에서는 최신 버전을, iOS11 미만에서는 1.2.8 사용을 권장합니다.
iOS Nugu SDK 는 1.2.8 이상에서 다양한 인터페이스와 안정성을 보장합니다.
iOS12 이상에서는 최신 버전을, iOS11 미만에서는 1.2.8 사용을 권장합니다.
Podfile
에 다음과 같이 의존성을 추가합니다.
1
2
3
target '{Your_Application}' do
pod 'NuguClientKit'
end
터미널을 열어 Podfile이 있는 프로젝트 경로에서 아래 Script를 실행합니다.
1
$ pod install
Cartfile
에 다음과 같이 의존성을 추가합니다.
1
github "nugu-developers/nugu-ios"
터미널을 열어 Podfile이 있는 프로젝트 경로에서 아래 Script를 실행합니다.
1
carthage update
NUGU PoC를 생성하기 위해서는 NUGU Developers를 통해 제휴가 필요합니다.
더 자세한 내용은 NUGU SDK 소개에서 확인이 가능합니다.
발급받은 PoC 정보를 확인하기 위해서 NUGU SDK PoC목록으로 이동해서 Client ID, Client Secret, Redirect URI 정보를 확인하세요.
NUGU SDK를 사용하는 앱 간에 URL Scheme 충돌을 방지하기 위해,
Redirect URI는 nugu.user.{client-id}://auth
로 설정하는 것을 권고합니다.
info.plist
파일에 다음과 같이 URL Scheme을 추가합니다.
1
2
3
4
5
6
7
8
9
10
11
<dict>
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleURLSchemes</key>
<array>
<string>nugu.user.{client-id}</string>
</array>
</dict>
</array>
</dict>
NUGU SDK PoC목록에서 nugu-config.plist 파일을 다운로드 받습니다.
다운로드 받은 파일을 Application 에 복사하고 target 으로 추가합니다.
{application path}/Supporting Files/nugu-config.plist
ConfigurationStore
을 초기화 합니다.
1
2
3
4
5
6
7
import NuguClientKit
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey:
Any]?) -> Bool {
ConfigurationStore.shared.configure()
return true
}
NUGU 서비스는 음성인식을 위하여 마이크 권한 문구를 Info.plist 파일에 추가합니다.
1
2
<key>NSMicrophoneUsageDescription</key>
<string>For speech recognition</string>
NUGU 로그인은 NUGU 회원 연동 방식과 NUGU 회원 미사용 방식 두 가지로 제공됩니다.
NUGU 서비스를 이용하기 위해서는 OAuth 2.0 인증이 필요합니다.
OAuth 2.0 API 는 Authentication 에서 확인이 가능합니다.
NUGU 회원 연동 방식을 사용하기 위해서는 T아이디 연동이 필요합니다.
인 앱 브라우저를 통한 인증 결과를 NuguLoginKit
에서 처리하기 위해 다음과 같이 AppDelegate
클래스에 추가해야 합니다.
1
2
3
4
5
6
7
8
9
10
import NuguLoginKit
import NuguClientKit
func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey: Any] = [:]) -> Bool {
if ConfigurationStore.shared.isAuthorizationRedirectUrl(url: url) {
NuguOAuthClient.handle(url: url)
return true
}
return false
}
PoC 정보를 이용하여 다음과 같이 OAuthManager
를 통해 값을 설정한 후에 인 앱 브라우저(SFSafariViewController
)를 이용한 T아이 로그인을 시도합니다. 인증 절차가 모두 완료되면 결과를 Closure를 통해 받을 수 있습니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import NuguLoginKit
import NuguClientKit
lazy private(set) var oauthClient: NuguOAuthClient = {
do {
return try NuguOAuthClient(serviceName: Bundle.main.bundleIdentifier ?? "NuguSample")
} catch {
return NuguOAuthClient(deviceUniqueId: "{device-unique-id}")
}
}()
func login() {
oauthClient.loginWithTid(parentViewController: viewController) { (result) in
switch result {
case .success(let authInfo):
// Save authInfo
case .failure(let error):
// Occured error
}
}
}
발급 받은 refresh-token
이 이미 있다면, 이 후에는 인 앱 브라우저 없이 로그인 정보를 갱신할 수 있습니다.
1
2
3
4
5
6
7
8
9
10
func refresh() {
oauthClient.loginSilentlyWithTid(refreshToken: refreshToken) { (result) in
switch result {
case .success(let authInfo):
// Save authInfo
case .failure(let error):
// Occured error
}
}
}
PoC 정보를 이용하여 다음과 같이 OAuthManager
를 통해 값을 설정한 후 로그인을 시도합니다. 인증 절차가 모두 완료되면 결과를 Closure를 통해 받을 수 있습니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import NuguLoginKit
import NuguClientKit
lazy private(set) var oauthClient: NuguOAuthClient = {
do {
return try NuguOAuthClient(serviceName: Bundle.main.bundleIdentifier ?? "NuguSample")
} catch {
return NuguOAuthClient(deviceUniqueId: "{device-unique-id}")
}
}()
func login() {
oauthClient.loginAnonymously { (result) in
switch result {
case .success(let authInfo):
// Save authInfo
case .failure(let error):
// Occured error
}
}
}
음성인식을 요청 하기 전에 마이크 권한을 요청해 획득합니다.
1
AVAudioSession.sharedInstance().requestRecordPermission { hasPermission in }
NUGU 서비스를 이용하기 위해서는 AVAudioSession
의 Category
를 .playAndRecord
로 설정이 필요합니다.
1
2
3
4
5
6
7
func setAudioSession() throws {
try AVAudioSession.sharedInstance().setCategory(
.playAndRecord,
mode: .default,
options: [.defaultToSpeaker, .allowBluetoothA2DP]
)
}
음성인식을 요청하기 위해서는 아래와 같은 코드를 작성해야 합니다.
1. NuguClientKit
을 불러옵니다.
1
import NuguClientKit
2. NuguClient
인스턴스를 생성합니다.
1
2
let nuguBuilder = NuguClient.Builder()
let client = nuguBuilder.build()
3. 로그인 결과로 받은 Access-token을 NuguClientDelegate
로 전달해야 합니다.
1
2
3
func nuguClientRequestAccessToken() -> String? {
return "{access-token}"
}
4. NUGU 서버와의 연결 이후 음성인식을 요청합니다.
1
client.asrAgent.startRecognition(initiator: .user)
NUGU SDK for iOS의 Github Repository에 있는 샘플 앱을 통해서도 NUGU SDK의 주요 사용 방법을 확인하실 수 있습니다.