2011-12-18 35 views
6

Apple đã giải thích trong "Launching the App Store from an iPhone application" cách người ta có thể tạo liên kết liên kết đến cửa hàng ứng dụng và xử lý chuyển hướng trong nền để nó không làm phiền người dùng. Nhưng sẽ tốt hơn nếu không có chuyển hướng. Tôi dường như nhớ một cách để làm điều đó, nhưng bây giờ tôi không thể tìm thấy nó ở bất cứ đâu.Tạo liên kết liên kết đến cửa hàng iTunes mà không cần chuyển hướng?

Có thể tạo liên kết đơn vị liên kết từ ứng dụng iOS đến cửa hàng ứng dụng mà không có bất kỳ chuyển hướng nào không?

EDIT: Để làm rõ, tôi đang nói về liên kết liên kết Linkshare.

CHỈNH SỬA 2: Tôi đang tiến gần hơn. Tôi có liên kết này, mà tôi đã lấy thẳng ra khỏi trang "liên kết văn bản" của linkshare. Khi sử dụng mẹo của k1th bên dưới, hoạt động mà không có bất kỳ chuyển hướng nào trên iPad, nhưng vẫn có một chuyển hướng trên iPod touch [và có thể là iPhone]. Tôi suy đoán rằng chuyển hướng có thể là chuyển từ các ứng dụng iPad hàng đầu sang các ứng dụng iPhone hàng đầu, nhưng tôi không biết điều đó chắc chắn.

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

Trả lời

3

Tôi mang nó lý do bạn không muốn đổi hướng là

  • tránh trình duyệt Safari từ popping lên
  • tránh chuyển hướng trong ứng dụng App Store tự

Tôi muốn giải pháp của k1th, nhưng thất bại đó (tôi cho rằng nó có thể thất bại # 2 ở trên), tôi cho rằng vấn đề là liên kết itms đầu tiên không phải là "cuối cùng". Một giải pháp sẽ được chỉ đơn giản là mã hóa cứng URL (hoặc cung cấp nó bằng một số phương tiện khác):

- (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 
} 

Một giải pháp sạch sẽ để đọc ID ứng dụng ra khỏi itms liên kết trong request.URL và định dạng một URL mới bằng cách sử dụng mẫu sẽ đưa bạn trực tiếp đến ứng dụng của bạn.

0

tôi thấy this document và tôi nghĩ rằng nó đem lại cho tôi câu trả lời. Tôi luôn luôn có một thời gian khó giải mã những điều này, nhưng tôi nghĩ rằng nó nói rằng những gì tôi làm là bắt đầu với một liên kết cơ bản:

http://itunes.apple.com 

sau đó nối thêm một partnerId 30, cộng với dấu hiệu LinkShare liên kết của tôi, mà tôi nghĩ là

sf2bW7QX/qU 

để kết thúc với những điều sau đây:

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

tôi nhận được những gì tôi nghĩ là id của tôi bằng cách làm theo các hướng dẫn trong doc Apple, mà về cơ bản nói để lấy các tham số id f rom một liên kết linkshare ngẫu nhiên. Liên kết tôi đã sử dụng cho mục đích là:

<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" > 

Tôi vẫn không chắc chắn về toàn bộ điều. Linkshare liên kết token của tôi thực sự có một dấu gạch chéo trong nó?

4

Vâng, bạn có thể có dấu gạch chéo trong params (đó là bởi vì đó là một dấu gạch chéo sau dấu hỏi bắt đầu phần tham số của URL

Về bỏ qua Mobile Safari để xử lý các liên kết liên kết:.

Bạn có thể thiết lập một UIWebView ẩn để xử lý các chuyển hướng hoặc làm tất cả những gì trong hệ thống URL bốc mình này là với một WebView ẩn:.

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]; 

các đại biểu:

#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 nhu cầu trở thành một var dụ và bộ điều khiển xem bản thân cần phải được một <UIWebViewDelegate>. Bạn cũng cần phải đặt ủy quyền xem trên web ở đâu đó (ví dụ:trong -dealloc)

3

Có một giải pháp rất sạch trực tiếp từ Apple ở đây: https://developer.apple.com/library/ios/#qa/qa1629/_index.html

Và cho ngắn gọn, đây là đoạn code từ trang đó:

// 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]; 
} 
+0

Điều đó ẩn chuyển hướng, đó là một cải tiến. Nhưng nó vẫn còn đó, và chờ đợi kết quả là giảm, nhưng không loại bỏ. –

Các vấn đề liên quan