oauthRedirectUri: NUGU 서비스 관리 웹 내에서 Play 에 로그인 하고 나면 호출되는 url (ex> nugu.public.sample://oauth_refresh)
deviceUniqueId: NuguOauthClient 의 인증을 통해 관리되는 device unique id
NuguClientKit 에서는 사용자의 편의를 위해 NuguServiceWebView 의 cookie 값을 default 로 설정해주고 있습니다. 이를 위해선 addCookie 함수를 사용하시고, 직접 cookie 를 설정해주시고 싶다면 setCookie 를 사용합니다.
NuguClientKit 은 사용자의 편의를 위해서 cookie 를 default 로 제공하고 있습니다. Default cookie 를 사용하려면 addCooklie 함수를, 직접 cookie 를 세팅하려면 setCookie 함수를 사용하면 됩니다.
overridefuncviewDidLoad(){super.viewDidLoad()nuguServiceWebView.javascriptDelegate=self}extensionNuguServiceWebViewController:NuguServiceWebJavascriptDelegate{funcopenExternalApp(openExternalAppItem:WebOpenExternalApp){ifletappSchemeUrl=URL(string:openExternalAppItem.scheme??""),UIApplication.shared.canOpenURL(appSchemeUrl)==true{UIApplication.shared.open(appSchemeUrl,options:[:],completionHandler:nil)return}ifletappId=openExternalAppItem.appId,letappStoreUrl=URL(string:"https://itunes.apple.com/app/"+appId+"?mt=8"),UIApplication.shared.canOpenURL(appStoreUrl)==true{UIApplication.shared.open(appStoreUrl,options:[:],completionHandler:nil)}}funcopenInAppBrowser(url:String){present(SFSafariViewController(url:URL(string:url)!),animated:true,completion:nil)}funccloseWindow(reason:String){ifreason=="WITHDRAWN_USER"{navigationController?.dismiss(animated:true,completion:{// 인증 정보 파기})}else{navigationController?.popViewController(animated:true)}}funcrequestActiveRoutine(){guardletroutineItem=NuguCentralManager.shared.client.routineAgent.routineItem,NuguCentralManager.shared.client.routineAgent.state==.playingelse{return}nuguServiceWebView.onRoutineStatusChanged(token:routineItem.payload.token,status:RoutineState.playing.routineActivity)}}
NUGU 서비스 관리 웹 호출
serviceSettingUrl: NUGU 서비스 관리 웹 사이트
agreementUrl: NUGU 이용약관 웹 사이트
NuguServiceWebView 가 가지고 있던 serviceSettingUrl 과 agreementUrl 은 deprecate 되었습니다.
복사성공!
1
2
3
4
5
6
7
8
9
10
11
12
13
14
finalpublicclassNuguServiceWebView:WKWebView{/// Url for service setting web page (deprecated)@available(*,deprecated,message:"Use `ConfigurationStore`")publicstaticvarserviceSettingUrl:String{returndomain+"/3pp/main.html?screenCode=setting_webview"}/// Url for agreement web page (deprecated)@available(*,deprecated,message:"Use `ConfigurationStore`")publicstaticvaragreementUrl:String{returndomain+"/3pp/agreement/list.html"}}
대신 ConfigurationStore 에서 serviceSettingUrl 과 agreementUrl 을 제공합니다.
publicclassConfigurationStore{/// Get the web page url to configure play settings for the user device.////// - Parameter completion: The closure to receive result.funcserviceSettingUrl(completion:@escaping(Result<String,Error>)->Void){configurationMetadata{resultinswitchresult{case.success(letconfigurationMetadata):ifleturlString=configurationMetadata.serviceSetting{completion(.success(urlString))}else{completion(.failure(ConfigurationError.invalidUrl))}case.failure(leterror):completion(.failure(error))}}}/// Get the web page url for the terms of service.////// - Parameter completion: The closure to receive result.funcagreementUrl(completion:@escaping(Result<String,Error>)->Void){configurationMetadata{resultinswitchresult{case.success(letconfigurationMetadata):ifleturlString=configurationMetadata.termOfServiceUri{completion(.success(urlString))}else{completion(.failure(ConfigurationError.invalidUrl))}case.failure(leterror):completion(.failure(error))}}}}
Play 로그인 결과 전달
NUGU 서비스 관리 웹 내에서 Play 에 로그인 하고 나면 oauthRedirectUri 가 호출되며, WebView 를 갱신하면 로그인 결과가 웹 페이지에 반영됩니다.