지난번 프로젝트 때의 이야기이다.
웹뷰를 이용한 하이브리드 앱 개발이었는데 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 />
—>
'프로그래밍 > Xcode-iOS' 카테고리의 다른 글
[iOS] NSPredicate 24시간 범위 검색 조건 만들기(NSDate) (0) | 2017.04.29 |
---|---|
[iOS] Event Kit 이용하여 일정 등록 하는 방법 (0) | 2017.04.26 |
[iOS] 음력 변환(LunarSun Convert) 클래스 (0) | 2017.04.25 |
[iOS] Hex String to NSData (0) | 2017.04.24 |
[iOS] Objective-C 특수문자 정규표현식 (2) | 2017.04.21 |