【问题标题】:Make an affiliate link to the iTunes store without redirects?在没有重定向的情况下创建指向 iTunes 商店的附属链接?
【发布时间】:2012-09-06 10:51:22
【问题描述】:

Apple 在“Launching the App Store from an iPhone application”中解释了如何建立一个指向应用商店的附属链接并在后台处理重定向,以免惹恼用户。但最好根本没有重定向。我似乎记得看到过一种方法可以做到这一点,但现在我在任何地方都找不到。

是否可以在没有任何重定向的情况下创建从 iOS 应用到应用商店的附属链接?

编辑:澄清一下,我说的是 Linkshare 附属链接。

编辑 2:我越来越近了。我有这个链接,我直接从 linkshare 的“文本链接”页面中获取的。当使用下面的 k1th 技巧时,在 iPad 上没有任何重定向,但在 iPod touch [和可能是 iPhone] 上仍然有一个重定向。我推测重定向可能是从顶级 iPad 应用切换到顶级 iPhone 应用,但我不确定。

http://click.linksynergy.com/fs-bin/click?id=sf2bW7QX/qU&offerid=146261.10005745&type=3&subid=0

【问题讨论】:

    标签: ios redirect affiliate


    【解决方案1】:

    是的,您可能在参数中有斜杠(这是因为它是一个斜杠之后问号开始网址的参数部分。

    关于跳过 Mobile Safari 处理附属链接:

    您可以设置一个隐藏的 UIWebView 来处理重定向,也可以自己在 URL 加载系统中执行所有这些操作。 这是一个隐藏的 WebView:

    NSURLRequest *r = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://click.linksynergy.com/fs-bin/click?id=sf2bW7QX/qU&offerid=146261.431296703&type=2&subid=0"]];
    
    testWebView = [[UIWebView alloc] initWithFrame:CGRectMake(0, 0, 10, 10)];
    testWebView.hidden = YES;
    testWebView.delegate = self;
    [testWebView loadRequest:r];
    

    委托人:

    #pragma mark - UIWebViewDelegate
    
    - (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {
    
        if ([request.URL.scheme isEqualToString:@"itms"] &&
            [[UIApplication sharedApplication] canOpenURL:request.URL]) {
            [[UIApplication sharedApplication] openURL:request.URL];
            return NO;
        }
    
        return YES; // go on redirecting
    }
    

    testWebView 需要是一个实例变量并且视图控制器本身需要是一个<UIWebViewDelegate>。您还需要在某处将 webview 委托设置为 nil(例如在 -dealloc 中)

    【讨论】:

      【解决方案2】:

      我认为您不希望重定向的原因是

      • 避免 Safari 浏览器弹出
      • 避免在 App Store 应用程序本身内重定向

      我更喜欢 k1th 的解决方案,但如果失败(我想它可能会失败上面的 #2),我认为问题在于第一个 itms 链接不是“最终”链接。一种解决方案是简单地对 URL 进行硬编码(或通过其他方式提供):

      - (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {
          NSURL myAppUrl = ....
          if ([request.URL.scheme isEqualToString:@"itms"] &&
              [[UIApplication sharedApplication] canOpenURL:myAppURL]) {
              [[UIApplication sharedApplication] openURL:myAppURL];
              return NO;
          }
      
          return YES; // go on redirecting
      }
      

      更简洁的解决方案是从 request.URL 中的 itms 链接中读取应用 ID,并使用将您直接带到您的应用的模式格式化一个新的 URL。

      【讨论】:

        【解决方案3】:

        这里有一个直接来自 Apple 的更清洁的解决方案:https://developer.apple.com/library/ios/#qa/qa1629/_index.html

        为简洁起见,以下是该页面的代码:

        // Process a LinkShare/TradeDoubler/DGM URL to something iPhone can handle
        - (void)openReferralURL:(NSURL *)referralURL {
            NSURLConnection *conn = [[NSURLConnection alloc] initWithRequest:[NSURLRequest requestWithURL:referralURL] delegate:self startImmediately:YES];
            [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 {
            self.iTunesURL = [response URL];
            return request;
        }
        
        // No more redirects; use the last URL saved
        - (void)connectionDidFinishLoading:(NSURLConnection *)connection {
            [[UIApplication sharedApplication] openURL:self.iTunesURL];
        }
        

        【讨论】:

        • 隐藏重定向,这是一个改进。但它仍然存在,由此产生的等待减少了,但并未消除。
        【解决方案4】:

        我找到了this document,我认为它给了我答案。我总是很难破译这些东西,但我认为它表明我所做的是从一个基本链接开始:

        http://itunes.apple.com
        

        然后附加一个 30 的 partnerId,加上我的 linkshare 附属令牌,我认为是

        sf2bW7QX/qU
        

        最终得到以下结果:

        http://itunes.apple.com?partnerId=30&id=sf2bW7QX/qU
        

        按照 Apple 文档中的说明,我得到了我认为是我的 id 的信息,该说明基本上是说从随机链接共享链接中获取 id 参数。我用于此目的的链接是这样的:

        <a href="http://click.linksynergy.com/fs-bin/click?id=sf2bW7QX/qU&offerid=146261.431296703&type=2&subid=0"><IMG border=0 src="http://a464.phobos.apple.com/us/r30/Music/b9/7f/91/mzi.kbjyfypr.170x170-75.jpg" ></a><IMG border=0 width=1 height=1 src="http://ad.linksynergy.com/fs-bin/show?id=sf2bW7QX/qU&bids=146261.431296703&type=2&subid=0" >
        

        我对整个事情还是很不确定。我的 linkshare 会员令牌中真的可以有斜线吗?

        【讨论】:

          【解决方案5】:

          这回答了你的问题: http://www.apple.com/itunes/affiliates/resources/documentation/linking-to-the-itunes-music-store.html#apps

          顺便说一句,我觉得整个联盟计划太复杂了。我调查了一下,我认为这不值得 5% 的佣金。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2020-08-23
            • 1970-01-01
            • 2019-09-02
            • 1970-01-01
            • 2016-05-27
            • 2013-04-30
            • 2016-07-02
            • 2015-10-20
            相关资源
            最近更新 更多