TitaniumMobileでiPhoneアプリを開発しています。今度は、アフィリエイトリンクを使用してアプリからAppStoreにリンクしたいと思いました。もちろん、これは最初にSafariを開き、次に迷惑なAppStoreを開きます。リダイレクトを内部で処理する方法について、Appleのこのガイドを見つけました(https://developer.apple.com/library/ios/qa/qa2008/qa1629.html)。Titaniumを使用しているので、ネイティブモジュールを実装して、Titaniumから使用するだけだと思いました。
これまでのところ良いですが、私はそれを動作させることができません。これが私がこれまでに持っているものです(私はObjective-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]];