我正在使用Titanium Mobile开发iPhone应用程序。现在我想通过联盟链接从我的应用程序链接到App Store。当然,这将首先打开Safari,然后是App Store,这很烦人。我发现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]];
答案 0 :(得分:0)
您release
立即建立了联系。你应该只在连接完成后才这样做。