it-swarm.com.de

Wie bekomme ich einen Preis für lokale Währung für In-App-Käufe in iOS?

Ich möchte die App Store-Position des Benutzers ermitteln. Dies bedeutet, dass sie in den USA und Australien (AUD) erhältlich sind. Folgender Code verwendet.

- (void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response
{
    Books = response.products;
    if ([SKPaymentQueue canMakePayments] && [response.products count]>0) {

    }

    for (SKProduct *book in Books) {
        NSLocale *locat=[NSLocale currentLocale];
        NSString *strlocate=[locat objectForKey:NSLocaleCountryCode];

        NSLog(@"\n\n\n Device country== %@ \n\n\n",strlocate);

        NSLocale* storeLocale = book.priceLocale;
        NSString *storeCountry = (NSString*)CFLocaleGetValue((CFLocaleRef)storeLocale, kCFLocaleCountryCode);
        NSLog(@"\n\n\n store country== %@ \n\n\n",storeCountry);
    }
}

Ich möchte gerne klug sein, wenn Buchstufe eins bedeutet, 0,99 AUD $ 0,99 JPY 85 basierend auf der App-Store-Preismatrix-Tabelle.

Ich habe im Simulator getestet. Ich habe den Ländernamen in iTunes, Appstore und Safari im System geändert. aber ich bekomme nur US-Ländercode.

Bearbeiten Sie: Einstellungen-> Allgemein-> International-> Regionsformat-> Land

Ich habe im Gerät getestet: Das Geräteland hat sich nur geändert. Shop-Land zeigen US-Landeskennzahl und Preis. Ich möchte die Landeskennzahl vor dem Start der Kaufzeit speichern.

wie viele tage einmal der preis aufgrund von währungsschwankungen geändert wird?

mein Inapp-Betrieb hat eine Klasse gemacht. Bevor der inapp-Vorgang gemacht wird, möchte ich den lokalen Preis für den Benutzer anzeigen, der denselben Preiseffekt im inapp-Vorgang widerspiegelt.

ich zeige die Liste der kostenlosen und bezahlten Bücher an, die von meinem Server abgerufen wird. Ich zeige den Preis für jeden Artikel. Diese Artikelpreise während der Verarbeitung des Appstores zeigen den Dollarpreis an. wenn Appstore den Preis gezeigt hat, möchte ich auch angezeigt werden. Damit ich den Ländercode an meinen Server senden möchte, antworten meine Server auf diese länderspezifische Preisliste und das Währungssymbol. 

26
Senthilkumar
productsRequest = [[SKProductsRequest alloc] initWithProductIdentifiers:prodcutIdentifier];
    productsRequest.delegate = self;
    
    // This will trigger the SKProductsRequestDelegate callbacks
    [productsRequest start];

Dadurch wird Ihre Delegatfunktion aufgerufen. Sobald der oben beschriebene Vorgang abgeschlossen ist, wird automatisch die unten genannte Funktion aufgerufen. Hier wird die gesendete App Store-Anforderung abgeschlossen. 

(void)requestDidFinish:(SKRequest *)request
{
   
    
    SKProduct *book = [Books objectAtIndex:0];
        
    NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init];
    [numberFormatter setFormatterBehavior:NSNumberFormatterBehavior10_4];
    [numberFormatter setNumberStyle:NSNumberFormatterCurrencyStyle];
    [numberFormatter setLocale:book.priceLocale];
    
    NSLocale* storeLocale = book.priceLocale;
    NSString *storeCountry = (NSString*)CFLocaleGetValue((CFLocaleRef)storeLocale, kCFLocaleCountryCode);
    
}

geben Sie das Gebietsschema und das Land entsprechend Ihrem Interesse an. 

31
Andro Selva

Hier ist das SKProduct:

NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init];
[numberFormatter setFormatterBehavior:NSNumberFormatterBehavior10_4];
[numberFormatter setNumberStyle:NSNumberFormatterCurrencyStyle];
[numberFormatter setLocale:book.priceLocale];
NSString *formattedPrice = [numberFormatter stringFromNumber:book.price];

NSLog(@"%@", formattedPrice);

einfach fragen, ob etwas unklar ist!

Grüße,

26
Asif Mujteba

Eine Codezeile:

product ist die Objektinstanz SKProduct:

NSString *price = [NSString stringWithFormat:@"%@%@ %@", [product.priceLocale objectForKey:NSLocaleCurrencySymbol], product.price, [product.priceLocale objectForKey:NSLocaleCurrencyCode]];

Ergebnisse:

1,39 USD

10
mskw

ich benutze das:

  NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init];
    [numberFormatter setFormatterBehavior:NSNumberFormatterBehavior10_4];
    [numberFormatter setNumberStyle:NSNumberFormatterCurrencyStyle];
    [numberFormatter setLocale:basicProduct.priceLocale];
    NSString *formattedString = [numberFormatter stringFromNumber:basicProduct.price];
    NSLog(@"product with currency:%@", formattedString);
    [retDict setObject:formattedString forKey:@"basic_price"];
    NSLog(@"Product title: %@" , basicProduct.localizedTitle);
    NSLog(@"Product description: %@" , basicProduct.localizedDescription);
    NSLog(@"Product price: %@" , basicProduct.price);
    NSLog(@"Product id: %@" , basicProduct.productIdentifier);

in der Delegiertenmethode: 

 - (void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response

dies kann geschehen, bevor der Benutzer klickt, um Sachen zu kaufen.

6
Nikita P

Sie können auch mehr über Gebietsschemaobjekte erfahren, auch Ich denke, Sie können auch das Währungsgebietsschema von NSLocale verwenden, wie unten gezeigt

 NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
[formatter setNumberStyle:NSNumberFormatterCurrencyStyle];
[formatter setLocale:[NSLocale currentLocale];
NSString *localizedMoneyString = [formatter stringFromNumber:myCurrencyNSNumberObject];

und Sie würden die richtige formatierte Währungszeichenfolge erhalten,

SKProduct *product = [self.products objectAtIndex:indexPath.row];
NSNumberFormatter *formatter = [[[NSNumberFormatter alloc] init] autorelease];
[formatter setNumberStyle:NSNumberFormatterCurrencyStyle];
[formatter setLocale:product.priceLocale];
currencyString = [formatter stringFromNumber:product.price];

und ich habe es auch in meiner app ausprobiert

NSDecimalNumber *amount = [NSDecimalNumber decimalNumberWithString:@"50.00"];
NSNumberFormatter *currencyFormat = [[NSNumberFormatter alloc] init];
NSLocale *locale = [NSLocale currentLocale];
[currencyFormat setNumberStyle:NSNumberFormatterCurrencyStyle];
[currencyFormat setLocale:locale];
NSLog(@"Amount with symbol: %@", [currencyFormat stringFromNumber:amount]);//Eg: $50.00
NSLog(@"Current Locale : %@", [locale localeIdentifier]);//Eg: en_US

Hoffe es wird dir helfen

5
Kirtikumar A.

In Swift 3:

    let numberFormatter = NumberFormatter()
    numberFormatter.formatterBehavior = .behavior10_4
    numberFormatter.numberStyle = .currency
    numberFormatter.locale = product.priceLocale
    let formattedPrice = numberFormatter.string(from: product.price)
4
brnunes

Auf dem Gerät in productsResponse erhalten Sie das korrekte product.price und product.priceLocale für das AppStore-Konto. Sie sind derzeit angemeldet. Wenn Sie dieses Gebietsschema zum Formatieren des empfangenen Preises verwenden, erhalten Sie Zeichenfolgen wie "0.99 $", "33,0 руб . " und so weiter.

3
pcholberg

Verwenden Sie https://github.com/bizz84/SwiftyStoreKit , dort ist

localizedPrice in SKProduct

Direkt verwenden Sie diese Member-Variable ist OK, NO ANY CODE CONVERSION IS] BENÖTIGT !!

Der App Store antwortet Ihrer App mit dem korrekten lokalen Preis, basierend auf dem App Store Land/der Region des aktuellen Benutzers. Wie zu ändern:

https://Apple.stackexchange.com/a/89186/283550

Ich habe das Verhalten getestet, es ist korrekt, nachdem ich das Land von Hongkong nach Taiwan gewechselt habe. Ich kann sehen, dass der Preis Tier 1 von 8 HK $ auf 30 $ geändert wurde. (Hongkong-Dollar zu Taiwan-Dollar)

0
Amos