- This topic has 2개 답변, 2명 참여, and was last updated 3 years 전에 by oneforall88.
-
글쓴이글
-
-
oneforall88참가자
- 글작성 : 1
- 답글작성 : 1
안녕하세요. ios공부는 따로 해본적 없고 하이브리드 개발을 맡아서 꾸역꾸역 하고 있는 사람입니다.
저와 비슷한 케이스가 있는걸 보고 사이트에 가입하고 염치없지만 첫글부터 질문글을 남깁니다.
에뮬레이터에서는 다 잘되는것들이 단말기로 돌리면 안되서 정말 미쳐버릴것 같습니다.
이것때문에 오픈도 못하고 있어요.
UIWebview가 속도 이슈가 있어 WKWebview로 변경을 했고
테스트를 했는데 에뮬에서는 쿠키가 잘 저장되고 잘불러와지는데
아이폰 구형단말기(6,7)에서만 유독 쿠키가 적용이 되다 안되다합니다.
예) 쿠키 A값을 1을 2로 변경. 될때가 있고 안될때가 있음.
쿠키 A값을 바꾸면서 A값을 pin으로 저장하는데 가끔 undefined가 들어가는 현상
쿠키를 삭제 했는데 남아있는현상
위와 같습니다.
처음에는 UIWebview의 경우 쿠키가 자동관리 된다고 하여
웹에서 jquery.cookie를 이용해서 다 처리를 했었습니다.
그러다 WKWebview로 바꾸면서 아래와 같은 코드를 추가했었습니다.
applicationWillTerminate와 applicationDidEnterBackground에 saveHTTPCookies
applicationWillEnterForeground에 loadHTTPCookies
이렇게도 해보고 viewdidload에도 loadHTTPCookies를 추가해보고 별거 다해봤습니다.
jquery.cookie에서 $.cookie(“test”, value)와 같이 값을 설정하고 alert으로 불러보면 잘 불러와지지만 앱을 끄면 다시 원복되어 있곤 합니다.
그래서 setCookie를 만들어 직접 넣어둬 줘봤습니다.
정말 찾아볼거 다 찾아보고 해볼거 다해본거 같습니다. 고수님들 저를 가엽게 여기시어 한번만 도와주세요. ㅠㅠ
- objective c로 부탁드립니다.
- (void)setCookie: (NSString )name value:(NSString )value
{
NSURL* url = HOST_URL;
NSString *sUrl = url.absoluteString;
dispatch_async(dispatch_get_main_queue(), ^{
[[NSHTTPCookieStorage sharedHTTPCookieStorage] setCookieAcceptPolicy:NSHTTPCookieAcceptPolicyAlways];
NSString *urlStr = [url.absoluteString stringByReplacingOccurrencesOfString:@”http://” withString:@””%5D;
NSMutableDictionary *cookieProperties = [NSMutableDictionary dictionary];
[cookieProperties setObject:@”0″ forKey:NSHTTPCookieVersion];
[cookieProperties setObject:name forKey:NSHTTPCookieName];
[cookieProperties setObject:value forKey:NSHTTPCookieValue];
[cookieProperties setObject:urlStr forKey:NSHTTPCookieDomain];
[cookieProperties setObject:url forKey:NSHTTPCookieOriginURL];
[cookieProperties setObject:@”/” forKey:NSHTTPCookiePath];
[cookieProperties setObject:[[NSDate date] dateByAddingTimeInterval:3600] forKey:NSHTTPCookieExpires];
NSHTTPCookie *cookie = [NSHTTPCookie cookieWithProperties:cookieProperties];
[webView.configuration.websiteDataStore.httpCookieStore setCookie:cookie completionHandler:nil];
NSData *cookieData = [NSKeyedArchiver archivedDataWithRootObject:[[NSHTTPCookieStorage sharedHTTPCookieStorage] cookies]];
[[NSUserDefaults standardUserDefaults] setObject:cookieData forKey:@”cookieArray”];
[[NSUserDefaults standardUserDefaults] synchronize];
});
}
-(void)loadHTTPCookies
{
NSMutableArray* cookieDictionary = [[NSUserDefaults standardUserDefaults] valueForKey:@”cookieArray”];
for (int i=0; i < cookieDictionary.count; i++)
{
NSMutableDictionary* cookieDictionary1 = [[NSUserDefaults standardUserDefaults] valueForKey:[cookieDictionary objectAtIndex:i]];
NSHTTPCookie *cookie = [NSHTTPCookie cookieWithProperties:cookieDictionary1];
[[NSHTTPCookieStorage sharedHTTPCookieStorage] setCookie:cookie];
}
NSLog(@”set cookie”);
NSData *cookieData = [[NSUserDefaults standardUserDefaults] objectForKey:@”cookieArray”];
if ([cookieData length] > 0) {
NSArray *cookies = [NSKeyedUnarchiver unarchiveObjectWithData:cookieData];
for (NSHTTPCookie *cookie in cookies) {
NSLog(@”set Cookie : %@”,cookie);
[[NSHTTPCookieStorage sharedHTTPCookieStorage] setCookie:cookie];
}
}
}
-(void)saveHTTPCookies
{
NSLog(@”saveHTTPCookies”);
NSMutableArray *cookieArray = [[NSMutableArray alloc] init];
for (NSHTTPCookie *cookie in [[NSHTTPCookieStorage sharedHTTPCookieStorage] cookies]) {
[cookieArray addObject:cookie.name];
NSMutableDictionary *cookieProperties = [NSMutableDictionary dictionary];
[cookieProperties setObject:cookie.name forKey:NSHTTPCookieName];
[cookieProperties setObject:cookie.value forKey:NSHTTPCookieValue];
[cookieProperties setObject:cookie.domain forKey:NSHTTPCookieDomain];
[cookieProperties setObject:cookie.path forKey:NSHTTPCookiePath];
[cookieProperties setObject:[NSNumber numberWithUnsignedInteger:cookie.version] forKey:NSHTTPCookieVersion];
[cookieProperties setObject:[[NSDate date] dateByAddingTimeInterval:2629743] forKey:NSHTTPCookieExpires];
[[NSUserDefaults standardUserDefaults] setValue:cookieProperties forKey:cookie.name];
[[NSUserDefaults standardUserDefaults] synchronize];
}
NSData *cookieData = [NSKeyedArchiver archivedDataWithRootObject:[[NSHTTPCookieStorage sharedHTTPCookieStorage] cookies]];
[[NSUserDefaults standardUserDefaults] setObject:cookieData forKey:@”cookieArray”];
[[NSUserDefaults standardUserDefaults] synchronize];
}
2021-11-25 오후 5:30 #50110 -
-
oneforall88참가자
- 글작성 : 1
- 답글작성 : 1
아이폰6 os 버전 12.5.5
아이폰7 os 버전 14.x입니다.
sdk target 버전 말씀하시는거면 9.3이고 12.5로도 해봤습니다.
xcode는 12.5입니다.
2021-11-26 오후 6:59 #50169
-
-
-
글쓴이글
- 답변은 로그인 후 가능합니다.