2012-11-20 17 views
1

我使用iTunes應用程序內像鏈接:iTunes的符號鏈接到本地​​化的應用

NSString *app_link = @"samuraivszombiesdefense"; 
NSString *link = [@"itms-apps://itunes.com/apps/"stringByAppendingString:app_name]; 
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:link]]; 

難道有人碰巧知道:這是什麼「應用程序名稱」 - 應用程序記錄的名稱(除禁止符號)在iTunesConnect中編輯版本詳細信息時,是否在iTunes中創建(您可以在iTunesConnect上看到的內容 - >'管理您的應用'屏幕)或'元數據和上傳'中的'應用名稱'字段?

我的意思是,如果應用程序的元數據有很多種語言,則每種語言的「應用程序名稱」是不同的。如果appname是英文應用程序名稱,就會像'itms-apps://itunes.com/apps/appname'一樣鏈接?

回答

0

編輯:如果您只對所有國家使用相同的鏈接,應用程序的鏈接將不起作用。因爲不同國家的鏈接不同。例如Facebook在中國的鏈接在'/ com'和'/ app'之間有'/ cn'。看到圖片:enter image description here


要extreamly簡潔:

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"itms://itunes.com/apps/appname"]]; 

如果您要發送到所有的應用程序的開發,使用

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"itms://itunes.com/apps/developername"]]; 

如果你想打開您的公司名稱的特定應用程序包含在URL:

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"itms://itunes.com/apps/developername/appname"]]; 

而且你可以參考這個問題更多:How to link to apps on the app store

+0

你看了我的問題,@sunkehappy?你剛剛從我之前讀過的另一個問題寫下了答案。我問過這個'app name'是什麼 - 應用程序記錄的名稱在連接或從元數據'應用程序名稱'? – Tertium

+0

我編輯了我的答案,你可以檢查你是否需要這個。 – sunkehappy

+0

我明白了,@sunkenhappy,但是如果我不使用'我們'或'de',只是itms-apps://itunes.com/apps/samuraivszombiesdefense,它不會在所有國家都有效嗎? – Tertium

0

我們已經找到了最好的解決辦法是避免試圖預測網址,並創建一個自定義URL重定向像http://mycompany.com/redirects/my-app-itunes您可以更新重定向到正確的URL一旦你知道它。

您必須使用的確切字符串是難以得到的權利,尤其是當你有特殊字符,空格等規則甚至可能會改變,或者蘋果可能決定改變一些東西。最好將URL保存在您的控制之下。

如果你真的想要走這條路,看this documentation from Apple。它詳細正是你需要做的的應用程序名稱轉換成短友好iTunes網址是什麼:

  • 移除所有的空格
  • 轉換所有字符爲小寫
  • 刪除所有的版權(©) ,商標(™)和註冊商標(®)符號
  • 替換符號( 「&」) 「和」
  • 刪除大部分標點符號(如清單2所示的設置)
  • 與他們的要素字符(U,A等)
  • 保留所有其他字符,是更換重音符號和其他「裝飾」字符(U,A等)。

,因爲它出現在iTunes Connect的應用程序列表中的應用程序名稱應該是域名(非本地化)。但最好的是測試這個。

最後,從蘋果:

這些itunes.com網址提供方便,並不 保證鏈接到一個特定的應用或公司。在將 材料用於任何市場營銷或其他公開 之前,請務必測試您的URL。如果存在命名衝突,請繼續使用itunes.apple.com網址的標準 網址,該網址在網址中包含唯一的數字標識 。

+0

很好@MikeWeller,但是當你使用重定向什麼URL你指向你的應用程序?我的意思是,如果每個國家都有不同的鏈接,除了本地美國市場外,幾乎不可能鏈接到我自己的應用程序? – Tertium

+1

如果每個市場都有不同的應用程序,每個應用程序都有自己的鏈接,那麼您必須以某種方式將用戶的區域設置包含在URL中,然後根據該應用程序重定向到相應的應用程序。您的應用是鏈接到自己,還是鏈接到商店中的其他應用? –

+0

這是指向完整版本的精簡版本。我已經添加了自己的答案(關於使用鏈接,如http://itunes.apple.com/app/idXXXXXXXXX?mt=8)。看起來它比任何國家的符號鏈接都更可預測。現在它起作用了(我認爲)。你怎麼看? – Tertium

1

好的,這是我的解決方案。 我決定使用如下網址: http://itunes.apple.com/app/idXXXXXXXXX?mt=8,其中XXXXXXXXX - 我的應用的ID。 沒有國家的前綴,所以我想它可以在全球範圍內工作,不僅在美國或德國。 還是不是?

這種鏈接可能會導致多個重定向。因此,爲了避免他們我已經用這樣的代碼(基於蘋果文檔的代碼和工作得很好):

@interface iTunesOpener() 
{ 
    NSURL *iTunesURL; 
} 

- (void)openAppLinkFromAppId:(NSString *) appid; 

- (void)openReferralURL:(NSURL *)referralURL; 

- (NSURLRequest *)connection:(NSURLConnection *)connection willSendRequest:(NSURLRequest *)request redirectResponse:(NSURLResponse *)response; 

- (void)connectionDidFinishLoading:(NSURLConnection *)connection; 

@end 


@implementation iTunesOpener 

- (void)openAppLinkFromAppId:(NSString *) appid 
{ 
    NSString *iTunesLink = [NSString stringWithFormat:@"http://itunes.apple.com/app/id%@?mt=8", appid]; 
    NSURL* url = [NSURL URLWithString:iTunesLink]; 
    [self openReferralURL: url]; 
} 

// Process a LinkShare/TradeDoubler/DGM URL to something iPhone can handle 
- (void)openReferralURL:(NSURL *)referralURL 
{ 
    NSURLConnection *con = [[NSURLConnection alloc] initWithRequest:[NSURLRequest requestWithURL:referralURL] delegate:self startImmediately:YES]; 
    [con 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 
{ 
    iTunesURL = [response URL]; 
    if([iTunesURL.host hasSuffix:@"itunes.apple.com"]) 
    { 
     [connection cancel]; 
     [self connectionDidFinishLoading:connection]; 
     return nil; 
    } 
    else 
    { 
     return request; 
    } 
} 

// No more redirects; use the last URL saved 
- (void)connectionDidFinishLoading:(NSURLConnection *)connection 
{ 
    [[UIApplication sharedApplication] openURL:iTunesURL]; 
} 

@end