2012-06-22 4 views
0

나는 티타늄 모바일로 아이폰 앱을 개발 중이다. 이제는 제휴사 링크를 통해 앱에서 App Store로 연결하고 싶었습니다. 물론, 이것은 사파리를 먼저 열어서 짜증나는 앱 스토어를 열 것이다. Apple에서이 가이드를 통해 리디렉션을 내부적으로 처리하는 방법을 발견했습니다 (https://developer.apple.com/library/ios/#qa/qa2008/qa1629.html). 티타늄을 사용할 때, 저는 네이티브 모듈을 구현하고 티타늄에서 사용할 것이라고 생각했습니다.iOS5에서 내부 리디렉션을 처리하는 방법은 무엇입니까?

지금까지 그렇게 좋았지 만 작동시키지 못했습니다. 여기에 지금까지 가지고 (내가 목표 - C를 모르는, 그래서이 중 일부는 바보 수 있습니다) 내용은 다음과 같습니다

DeCompendiiReferralDelegate.h

#import <UIKit/UIKit.h> 

@interface DeCompendiiReferralDelegate : NSObject <NSURLConnectionDataDelegate> 

@property (retain) NSURL* iTunesURL; 

-(void)openReferralUrl:(NSURL *)referralURL; 

@end 

에게 DeCompendiiReferralDelegate.m

내가 전화
#import "DeCompendiiReferralDelegate.h" 

@implementation DeCompendiiReferralDelegate 

@synthesize iTunesURL; 

- (void)openReferralUrl:(NSURL *)referralURL { 
    NSURLConnection *con = [[NSURLConnection alloc] initWithRequest:[NSURLRequest requestWithURL:referralURL] delegate:self startImmediately:YES]; 
    [con release]; 
} 

- (NSURLRequest *)connection:(NSURLConnection *)connection willSendRequest:(NSURLRequest *)request redirectResponse:(NSURLResponse *)response { 
    self.iTunesURL = [response URL]; 
    if([self.iTunesURL.host hasSuffix:@"itunes.apple.com"]) 
    { 
     [connection cancel]; 
     [self connectionDidFinishLoading:connection]; 
     return nil; 
    } 
    else 
    { 
     return request; 
    } 
} 

- (void)connectionDidFinishLoading:(NSURLConnection *)connection {  
    [[UIApplication sharedApplication] openURL:self.iTunesURL]; 
} 

@end 

DeCompendiiReferralModule.m의이 코드. 디버깅은 openReferralUrl이 호출되었음을 나타내지 만 URL은 절대 열리지 않습니다. 내가 뭘 잘못하고 있는거야? 바로

DeCompendiiReferralDelegate *referralDelegate = [[DeCompendiiReferralDelegate alloc] init]; 
[referralDelegate openReferralUrl:[NSURL URLWithString:urlString]]; 

답변

0

당신에게 release 연결 :

편집 그냥 여기에이 코드를 호출하는 방법은, 내가 이것을 설정하는 바보 같은 일을하고 있지 않다 확인합니다. 연결이 끝난 후에 만해야합니다.

+0

힌트를 보내 주셔서 감사합니다. 방금 Apple 가이드의 코드를 복사하고 곧바로 연결을 해제합니다. 나는 줄을 제거하고 다시 시도했지만 아무 것도 바뀌지 않는다. ... –

+0

'connectionDidFinishLoading'에서 로깅을하고 거기에 도착하는지 확인한다. 또한, 당신은 스스로'connectionDidFinishLoading' 호출해서는 안됩니다 ... – Mundi

+0

방금 ​​코드 예제에 대한 로깅 문을 생략했습니다. 나는 모든 곳에서 진술서를 기록하고있다. connection : willSendRequest : redirectResponse 및 connectionDidFinishLoading이 호출되지 않습니다. –

관련 문제