iOS9에서 canOpenURL: failed for URL: 발생

이렇게 셋팅했습니다.

이런… item3에는 kakao{해당앱키}를 사용해 주셔야 합니다. ㅜㅠ
예를들어 앱키가 aaabbbccc라면 kakaoaaabbbccc 같은 형식이 됩니다!

아… 그런가요…? 확인해보겠습니다…

근데 iOS8에서는 저부분 사용안해서 되는거 였군요…ㅠㅠ

감사합니다.

잘되네요…^^;;;

이건 다른 에러인데 1.0.42 버전에서 발생하였습니다.
(XCODE 7.0, Swift 2.0)

로그인 과정이 진행되지 않고있습니다.
KOSession.sharedSession().openWithCompletionHandler({(error:NSError!) → Void in

혹시 해결의 힌트를 얻을 수 있을까요?

(item0의 appID는 삭제 하고 올립니다.)

@dm_byun 정상 동작입니다.

해당 디바이스에 카카오톡과 카카오스토리가 설치되지 않아서 나오는 로그입니다.
https://devtalk.kakao.com/t/ios9/14632

FAQ에 있었네요!!!
앞으로는 먼저 상세히 살펴보고 질문을 올리도록 하겠습니다.
빠른 답변 감사합니다 ^^

몇가지 추가로 질문 더 드립니다.
기존에는 해당 디바이스에 카카오톡과 카카오 스토리가 설치 되지 않았을 경우 웹을 이용해 로그인을 수행했는데 위 시스템 에러 메세지 출력 후 더이상 진행 되지 않습니다.
IOS9은 아직 지원 되지 않는건가요?

지원 되지 않는다면 저 시스템 에러 메세지가 발생했을때 앱 내부에서 컨트롤 할 수 있는 방법이 있나요? openWithCompletionHandler의 Handler가 호출되지 않아 NSError정보도 넘어 오지 않습니다.

----IOS 개발가이드 로그인 부분 중—

  1. 카카오톡 앱이 설치되어 있고 카카오계정이 연결되어 있는 경우: 카카오톡의 카카오계정을 이용합니다.
  2. 카카오톡 앱이 설치되어 있으나 카카오계정 연결이 되어 있지 않은 경우: 사파리(Safari) 웹브라우저를 통해 카카오계정 연결을 수행하게 됩니다.
  3. 카카오톡 앱이 설치되어 있지 않은 경우: SDK의 내부 웹뷰를 통해 카카오계정 연결을 수행하게 됩니다.

저도 iOS9 에 앱 개발중인데 위와 같이 동일하게 설정되어있음에도 안되네요 ㅠㅠ… 뭐가 문제인지…

많이 바쁘시겠지만 도움 주시면 감사하겠습니다.

저도 카카오계정 로그인과 카카오링크 실행 시 앱이 깔려있지 않으면 오류 로그만 나오고 아무런 반응이 없네요.
앱스토어로 넘어가던지 해야 하는데…

또 카카오계정 로그인 시도 시 앱이 깔려 있어도
[[KOSession sharedSession] isOpen] 여기서 실패만 나오네요.

@dm_byun 더이상 진행이 안된다는게 어떤 이야기 이신가요?
저 위 에러는 톡과 스토리가 안깔려 있다라는 에러고… 직접입력해서 로그인 하는 플로우랑은 상관 없습니다.
로그인 웹뷰로 로그인 할 수 있지 않나요?

@irun0220 @wsky1101 에러로그나 스크린 캡쳐 등으로 원인 파악이 쉽게 도와주세요~
어떤 설정이 잘못 하신건지 감이 안오네요~

참고로 item0 = kakao 는 아니구요.
kakao+appkey 입니다. ex) kakaodd4e9cb75815cbdf7d87ed721a659baf

에러 출력 후 로그인 웹뷰 화면이 뜨지 않습니다.

(XCODE 7, Swift 2.0, IOS9 Simulator)

아래는 구현 중인 부분입니다.

    KOSession.sharedSession().close()  // 수행 함
            //아래 openWithCompletionHandler 에서 위 시스템 에러 메세지 발생 후 웹뷰 이동하지 않음.
            KOSession.sharedSession().openWithCompletionHandler({(error:NSError!) -> Void in
//진입하지 않음
            if(KOSession.sharedSession().isOpen()) {
                //로그인 성공
            } else {
                //로그인 실패
            }
        })

AppDelegate

func application(application: UIApplication,
        openURL url: NSURL,
        sourceApplication: String?,
        annotation: AnyObject) -> Bool {
            pinft("openURL \(url)") // 호출 되지 않음.
            if KOSession.isKakaoAccountLoginCallback(url){
                return KOSession.handleOpenURL(url)
            }
    }

웹뷰가 안뜨나요?

KOSession.sharedSession().presentingViewController 를 이용해 보세요.
카카오 샘플 스위프트 버전 참고…

2개의 좋아요

말씀해주신대로 Swift 샘플 보고 해보니 웹뷰가 뜹니다!!!
self.navigationController를 이용하는 부분이 추가 되었네요.

감사합니다!!

위에 올린 제 구현 방법에서의 수정은 아래와 같이 했습니다.
다른 분들도 참고하시길 바랍니다.

KOSession.sharedSession().close()
KOSession.sharedSession().presentingViewController = self.navigationController
KOSession.sharedSession().openWithCompletionHandler({(error:NSError!) -> Void in
    KOSession.sharedSession().presentingViewController = nil
    if(KOSession.sharedSession().isOpen()) {
        //로그인 성공
    } else {
        //로그인 실패
    }
})
1개의 좋아요

@dm_byun 잘 되신다니, 다행이에요~
행복한 한가위 되세요 ^^

1개의 좋아요

dm_byun 님과 완전히 동일한 증상입니다.

카카오 계정 로그인 시 카카오스토리가 설치되어 있지 않을 때 :
-canOpenURL: failed for URL: “storykompassauth://authorize” - error: “(null)”

카카오 계정 로그인 시 카카오톡이 설치되어 있지 않을 때 :
-canOpenURL: failed for URL: “kakaokompassauth://authorize” - error: “(null)”

카카오 계정 로그인 시 카카오스토리와 카카오톡이 설치 되어 있을 때 :
if ([[KOSession sharedSession] isOpen]) {
실패;;
}

카카오 링크 사용 시 카카오톡이 설치되어 있지 않을 때 :
-canOpenURL: failed for URL: “kakaolink://send” - error: “(null)”

Info.plist 는 위에 적어주신 것과 완전히 동일하게 설정했습니다.
물론 “kakao”+appkey 로요.

SDK는 1.0.42 입니다.

샘플을 보니 obj-c 쪽도 추가 되어있네요
한번 확인해보세요 ^^

KOSession *session = [KOSession sharedSession];
    
    if (session.isOpen) {
        [session close];
    }
    
    session.presentingViewController = self.navigationController; <---- 중요
    [session openWithCompletionHandler:^(NSError *error) {
        session.presentingViewController = nil;   <--- 중요
        
        if (!session.isOpen) {
            [[[UIAlertView alloc] initWithTitle:@"에러" message:error.description delegate:nil cancelButtonTitle:@"확인" otherButtonTitles:nil, nil] show];
        }
    }];

-canOpenURL: failed for URL: “kakaolink://send” - error: “(null)”
이 에러는 ios9 에서 추가되어서, 스킴을 열수 있는 앱이 없으면 로그에 찍고 있습니다.
정상 동작이니 너무 놀래지 마세요~

if ([[KOSession sharedSession] isOpen]) {
실패;;
}

false 인건가요? 아님 앱이 죽나요?
단순히 로그인웹뷰가 안보이는 거면, dm_byun 님이 적어주신걸로 해결 가능할것 같습니다.

isOpen() == false {
session open 하시면 됩니다.
}

해결 되었습니다… 바쁘신와중에 답변에 감사드립니다. ㅠㅠ

다른문제였지만… 제 실수로…

KOSession *session = [KOSession sharedSession];

if (session.isOpen) {
    [session close];
}

session.presentingViewController = self.navigationController;

[session openWithCompletionHandler:^(NSError *error) {
    NSLog(@"로그인 시도 ::: %@", error.localizedDescription);
    session.presentingViewController = nil;
    
    if (session.isOpen) {
         NSLog(@"login succeeded.");
    }
    else {
        NSLog(@"login failed");
    }

카톡이나 카스가 깔려있지 않을 때에는 session open 이 안되네요.
NSLog(@"로그인 시도 ::: … 까지 넘어가지 않습니다.

앱이 깔려 있을 때에는 죽는 건 아니고 NSLog(@“login failed”); 로그가 찍힙니다.

이제 저만 안되는 것 같네요. ㅠ.ㅠ