나는 티타늄 모바일로 아이폰 앱을 개발 중이다. 이제는 제휴사 링크를 통해 앱에서 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]];
힌트를 보내 주셔서 감사합니다. 방금 Apple 가이드의 코드를 복사하고 곧바로 연결을 해제합니다. 나는 줄을 제거하고 다시 시도했지만 아무 것도 바뀌지 않는다. ... –
'connectionDidFinishLoading'에서 로깅을하고 거기에 도착하는지 확인한다. 또한, 당신은 스스로'connectionDidFinishLoading' 호출해서는 안됩니다 ... – Mundi
방금 코드 예제에 대한 로깅 문을 생략했습니다. 나는 모든 곳에서 진술서를 기록하고있다. connection : willSendRequest : redirectResponse 및 connectionDidFinishLoading이 호출되지 않습니다. –