본문 바로가기
프로그래밍/Xcode-iOS

[iOS] UIWebView WebKit속성 설정 /User-Agent변경

by Mr-후 2017. 4. 24.
반응형

지난번 프로젝트  때의 이야기이다. 

 

웹뷰를 이용한 하이브리드 앱 개발이었는데 iOS에서 특정 기능이 작동하지 않는다고 하여 고심 중이었는데 

모바일웹 페이지에서 사용하는 jQuery에서 명령어를 오프라인캐시에 저장을 해서 사용하는데 iOS에서는 해당 기능이 작동하지 않는 것 같다고 하였다. 

 

인터넷 검색을 해보니 과연, 변경하는 방법이 있었다는...

여지껏 UIWebView를 사용하면서 한번도 설정해보지 않았던 속성을 설정하는 방법이 있었다. 

 

NSUserDefaults 클래스에 registerDefaults를 이용하여 WebKit 속성을 설정하는 방법에 대한 설명이다.

 

우선  [[NSUserDefaults standardUserDefaults] dictionaryRepresentation] 를 이용해서  어떤 속성들이 있는지 NSLog를 통해 찍어 보자. 

 

{

    WebKitAVFoundationEnabled = 1;

    WebKitAVKitEnabled = 1;

    WebKitAccelerated2dCanvasEnabled = 0;

    WebKitAcceleratedCompositingEnabled = 1;

    WebKitAcceleratedDrawingEnabled = 0;

       

<중략>

 

    WebKitDisplayImagesKey = 1;

    WebKitEditableLinkBehavior = 0;

    WebKitEnableInheritURIQueryComponent = 0;

    WebKitEnablePasswordEchoPreferenceKey = 1;

    WebKitExperimentalNotificationsEnabledPreferenceKey = 0;

    WebKitFantasyFont = Papyrus;

    WebKitFixedFont = Courier;

 

<중략>

 

    WebKitPasswordEchoDurationPreferenceKey = 2;

    WebKitPictographFont = AppleColorEmoji;

    WebKitPlugInSnapshottingEnabled = 0;

    WebKitPluginsEnabled = 1;

    WebKitPrivateBrowsingEnabled = 0;

    WebKitQTKitEnabled = 1;

    WebKitRequestAnimationFrameEnabled = 1;

    WebKitSansSerifFont = Helvetica;

    WebKitScreenFontSubstitutionEnabled = 0;

    WebKitSerifFont = Times;

    WebKitStorageBlockingPolicy = 1;

    WebKitStorageTrackerEnabledPreferenceKey = 0;

    WebKitStoreWebDataForBackup = 1;

    WebKitSubpixelCSSOMElementMetricsEnabled = 0;

    WebKitSuppressesIncrementalRendering = 0;

    WebKitWebGLEnabled = 1;

    WebKitWebSecurityEnabled = 1;

    WebKitXSSAuditorEnabled = 1;

    WebKitZoomsTextOnly = 1;

 

}

 

 

 

이런 저런 속성들이 나열되고 있으며 앱 자체에서 설정해 놓은 UserDefaults값들도 볼 수 있다. 

 

    /**

     * webview html5 localstorage using setting

     */

    NSDictionary *webKitDic = @{@"WebKitJavaScriptEnabled" : @YES,

                                @"WebKitStorageBlockingPolicy" : @YES,

                                @"WebKitStoreWebDataForBackup" : @YES

                                };

 

    [[NSUserDefaults standardUserDefaults] registerDefaults:webKitDic];

 

html5의 로컬스토리지를 사용할 수 있도록 설정을 YES로 바꾸고 앱을 빌드 하니 정상적으로 잘 작동하였다. 

자바스크립트 활성화여부 값을 True로 설정하고 StorageBlockingPolicy도 True로 설정하였다. StoreWebDataForBackup까지 True로 설정 이후 기능이 정상적으로 된다는 확인을 받을 수 있었다. 

 

 

User-Agent값도 동일한 방법으로 변경해서 사용할 수 있다. 

 

NSDictionary *dic = @{@"UserAgent" : [NSString stringWithFormat:@"UserAgent 값"]};[[NSUserDefaults standardUserDefaults] registerDefaults:dic];

 



<!— mobile browser only />

—>

반응형