2013-07-12 13 views
6

AppStore incelemesi satın almamızı gerektiriyor Non-renewing subscriptions türünü kaydettirmek için kullanıcıyı zorlamıyor. Aynı zamanda kullanıcı kayıt olmadığı anlamına da gelir o Non-renewing subscriptions tipKaydı olmayan abonelikler için geri yükleme işlemleri kayıt olmaksızın kayıt olmak

ve Apple Document Non-renewing subscriptions gerektirir geri yüklenebilir gerekir. Dedi:

Sigara yenileyen abonelikleri ve sarf ürünler otomatik Mağaza Kit tarafından restore değildir. Bununla birlikte, yenilenmeyen abonelikler ürününün yeniden üretilebilir olmasını sağlamalıdır. Bu ürünleri geri yüklemek için, işlemlerini kendi sunucunuzda satın aldığınızda ve bu işlemlerin kullanıcının aygıtlarına geri yüklenmesi için kendi mekanizmanızı sağlamanız gerekir. Kullanıcı kayıt, ben kullanıcıya eşsiz bir userId verecektir zaman

Yani kendini userName ve şifreyle userId alabilirsiniz, bu yüzden farklı ios cihaz için Kullanıcı bilgileri paylaşabilir ve ben işlemleri geri yükleyebilirsiniz çünkü benzersiz bir kullanıcı kimliği var.

Ancak sorun şudur: kullanıcı kayıt olmadığında, sunucum da onlara benzersiz bir userId verir, kayıt olmayan kullanıcı userId öğesini .plist'a kaydeder. İşlemleri de geri yükleyebilirler. Ancak, uygulamamı sildikten sonra bir kez indirdiğinde, userId kaybolur, bu yüzden işlemleri geri yükleyemez. Normal bir varsayılan kullanıcı olacak.

Appstore nedenle Uygulamamı reddedecektir mu:

Appstore reddedecektir Eğer uygulamayı silmek kayıt olmadan abonelikleri, Sigara yenileyen için işlemler daha önce

geri Restore Can, Bunu nasıl düzeltebilirim?

+0

Kullanıcıya kullanıcı vermeyi veya onu .plist dosyasına kaydetme fikrinden endişe duyuyorum. Kötü niyetli bir kullanıcı bu userId'yi çevrimiçi yayınlarsa ne olur? Bu güvenliğinizi bozar, evet? (.plist bilgisi iExplorer gibi programlar aracılığıyla kullanılabilir). –

+0

@ChrisPrince Kullanıcıyı çevrimiçi olarak gönderebilir, ancak sunucumuzun bir işlem listesi vardır. Bir abonelik (kullanılmayan) sadece bir kez başarılı bir şekilde geri yüklenebilir. Başkalarına gönderirse, diğerlerinden biri başarıyla geri yükleyebilir ve geri yükleyemez. Yani bu benim güvenliğimi bozmaz. –

+0

@ChrisPrince Not: işlemler önemlidir. UserId sadece kime geri yükleme demektir. Bazı hackerlar işlemlerinizi çalar ve daha sonra işlemleri diğer kullanıcılara satarlar. –

cevap

4

Uygulamamı appStore'a gönderdim.

Kayıt olan veya oturum açan kayıt olmayan abonelikler için işlemleri geri yüklerim.

"Kayıt ol" ve "uygulamamı silme" olmayan Yenileme abonelikleri için işlemleri geri yüklemiyorum.

Uygulamam

+0

Bu, iCloud oturum açmamışsa satın alma işlemlerini geri yüklemeyen bir uygulamayı kabul edebileceği anlamına geliyor. ne düşünüyorsun? – hasan83

+0

@hasan Uygulamam iOS4.3 + 'ı destekliyor, dolayısıyla iCloud yok. Ve kayıt olmadan yenilemeden abonelikler için işlemleri geri yükleme için mükemmel bir yol bulamıyorum, bu uygulamayı geri yüklemeden önce siliyorum 'Giriş kullanıcılarına yönelik işlemleri geri yükler ve benim uygulamayı silemeyen konuklar için işlemleri geri yüklerim –

+0

Bu bilmek güzel . Uygulamam için benzer bir strateji izliyorum, ancak henüz göndermedim. –

1
  • Kayıt yenilenmeyen inapp öğeler için isteğe bağlı olmalıdır onaylanmıştır.
  • Onlara, birden fazla cihazda kullanmak istiyorsanız, Kayıt olmanız ve oturum açmanız gerektiğini belirten bir mesaj verebilirsiniz.
  • Kayıt sırasında, e-posta ve cep telefonu numarası gibi kişisel bilgiler isteğe bağlı olmalı ve özellikle e-postayı kayıt işleminde neden tuttuğunuzu (örneğin şifre kurtarma gibi) açıklamak zorundasınız.
  • Önceki yorumlarda olduğu gibi, yenilenemeyen öğe için inapp çok pahalı değilse, uygulamayı kabul edebilirler. Fakat eğer, inapp maliyetli ise, kurallarından herhangi birini kırmanıza izin vermezler.

Not: UUID kullanmak ve anahtarlığın içinde saklamak için bir mekanizma kullanabilirsiniz.Uygulamayı yeniden yüklerseniz, anahtar zincirinden tekrar edinebilir ve aynı UUID'yi kullanarak sunucunuzdaki son kullanma sürelerini yönetebilirsiniz.

1

Elma alım veri devam etmek iCloud ile Önerdi:

#if USE_ICLOUD_STORAGE 
NSUbiquitousKeyValueStore *storage = [NSUbiquitousKeyValueStore defaultStore]; 
#else 
NSUserDefaults *storage = [NSUserDefaults standardUserDefaults]; 
#endif 

NSData *newReceipt = transaction.transactionReceipt; 
NSArray *savedReceipts = [storage arrayForKey:@"receipts"]; 
if (!receipts) { 
    // Storing the first receipt 
    [storage setObject:@[newReceipt] forKey:@"receipts"]; 
} else { 
    // Adding another receipt 
    NSArray *updatedReceipts = [savedReceipts arrayByAddingObject:newReceipt]; 
    [storage setObject:updatedReceipts forKey:@"receipts"]; 
} 

[storage synchronize]; 

En azından Kullanıcının uygulamayı siler zaman, satın alma bilgilerini atmadan daha iyidir. Müşterinin bir hizmet için iki kez ödeme yapması, harika bir kullanıcı deneyimi değildir.

+0

transactionReceipt kullanımdan kaldırılmıştır. – user965972