iphone - Xamarin iTunes 附属链接

标签 iphone ios objective-c xamarin.ios xamarin

我的应用程序使用标准的sharedApplication.OpenURL直接打开iTunes Affiliate链接。但是,Apple 推荐使用以下代码。

是否有支持 Xamarin 的 C# 版本?

// Process a LinkShare/TradeDoubler/DGM URL to something iPhone can handle
(void)openReferralURL:(NSURL *)referralURL
{
  NSURLRequest *theRequest=[NSURLRequest requestWithURL:referralURL cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:30.0];
  NSURLConnection *conn = [[NSURLConnection alloc] initWithRequest:theRequest delegate:self];
  [conn release];
}

// Save the most recent URL in case multiple redirects occur
// "iTunesURL" is an NSURL property in your class declaration               
(NSURLRequest *)connection:(NSURLConnection *)connection willSendRequest:(NSURLRequest *)request redirectResponse:(NSURLResponse *)response
{

if (response) {
    NSMutableURLRequest *r = [[request mutableCopy] autorelease]; // original request
    [r setURL: [request URL]];

    self.iTunesURL = [r URL];                    
    if ([self.iTunesURL.host hasSuffix:@"itunes.apple.com"]) {
        [[UIApplication sharedApplication] openURL:self.iTunesURL];
    }
    return r;
 } else {
    return request;
 }

}

最佳答案

找不到现有的 API,所以我编写了它:

享受吧!

    NSUrlRequest theRequest;
    NSUrlConnection conn;

    void Process (NSUrl url)
    {
        theRequest = new NSUrlRequest (url, NSUrlRequestCachePolicy.UseProtocolCachePolicy, 30);
        var del = new LinkDelegate ();
        conn = new NSUrlConnection (theRequest, del);
        conn.Start ();
    }
}

class LinkDelegate: NSUrlConnectionDelegate
{

    public override NSUrlRequest WillSendRequest (NSUrlConnection connection, NSUrlRequest request, NSUrlResponse response)
    {
        if (response!=null) {
            var url = request.Url;
            if (url.Host.ToLower ().Contains ("itunes.apple.com"))
                UIApplication.SharedApplication.OpenUrl (url);
            return NSUrlRequest.FromUrl (url);
        } else {
            return request; 
        }
    }
}

关于iphone - Xamarin iTunes 附属链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18816849/

相关文章:

objective-c - GCDAsyncSocket 标记参数

ios - 检查字符串是否是 const 结构成员的更好方法是什么?

iphone - Mac OS X 虚拟机

iphone - PerformSelectorOnMainThread 结果为 "unrecognized selector sent to instance"

ios - UISlider setMaximumTrackTintColor

ios - 如何解决以下自动布局约束问题?

iphone - 如何在 iPhone 中取消 ASIFormDataRequest

iphone - objective-c : UIColor * exception 'NSInvalidArgumentException?

javascript - 如果在已获得焦点时单击文本输入,如何执行某些操作 - 在 iPhone 上

ios - 当我打开系统相机时回调