2011-12-08 23 views
5

有沒有一種方法可以使用應用程序內購買,以便它們在美國不可用,並同時確定它們是否可用 - 如果不可用,則爲美國的客戶執行特殊任務誰不能使用它們?是否可以僅爲部分國家實施應用內購買?

+0

您絕對可以針對不同國家的不同AppID發佈多個版本的應用。但我想看到真實的答案。 :) – bealex

+0

聽說傳聞蘋果可能會因任何原因拒絕「克隆應用程序」。 – dontWatchMyProfile

+0

我認爲你可以跟蘋果談這件事。它們不能是克隆,而是同一個應用程序。在每家商店中都只有其中一個。位置檢測有時是不可接受的。 :) – bealex

回答

2

你可以使用CLLocationManager找到用戶位置,然後用MKReverseGeocoder弄清楚他們是在哪個國家。

有些人會拒絕訪問位置信息。作爲一個備份,你可以使用目前的設備是在語言(但也有使用這種方法的一些明顯的問題):

NSString * language = [[NSLocale preferredLanguages] objectAtIndex:0]; 
http://en.wikipedia.org/wiki/List_of_ISO_639-1_codes 

然後你只需要使用一個條件語句:

if(in USA){ 
    do whatever, don't allow in-app purchases 
} else { 
    allow in app purchases 
} 
+0

或者:如果位置服務不工作/被禁用,請處理它,就好像用戶在美國一樣。好主意。 – dontWatchMyProfile

0

也許你可以在後臺發送產品請求,並且如果返回的話只顯示購買按鈕。缺點是可能存在問題(存儲中斷,網絡問題,您暫時停用產品)會導致產品請求失敗,因此您必須適當設計替代用戶界面。

SKProductsRequest *productRequest = [[SKProductsRequest alloc] initWithProductIdentifiers:[NSSet setWithObject:productId]]; 
productRequest.delegate = self; 
[productRequest start]; 


-(void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response { 
    if ([[response products] count] > 0) { 
     // display purchase link 
    } else { 
     // display alternative UI 
    } 
}