2017-03-13 33 views
8

Bir tuğla duvara çarpmış gibi görünüyor, ancak aslında benim uygulamamda bulunan kullanıcı için bir giriş sayfası ve bir hesap sayfası oluştur. Kullanıcı uygulamanızı açtığında ve yeni bir hesap oluşturduğunda, bilgileri bir Firebase Sunucusu'nda (BaSS) saklanır.Otomatik yenilenebilir abonelikler, kurum içi kullanıcılara nasıl bağlanır, Apple kimliği değil?

Şimdi benim sorum şu ki, benim uygulamam aracılığıyla bir hesap oluşturan her kullanıcı için benim başvuruma abone olma seçeneğine sahip olmak için bu aboneliğin yalnızca kendi hesapları için geçerli olmasını (böylece elma değil) İD). Şu anda, kullanıcı benimle bir hesap oluşturup bir servise abone olmaya devam ederse, her şey uygulamanın tam özelliklerine erişebilecekleri şekilde çalışır.

Ancak, çıkış ve şu anda abonelikleri elma kimlikleri kullanıcının bağlı olan haliyle, çünkü başka bir hesap oluştururken, başka bir hesap ya da bu konuda herhangi bir hesap uygulamasına tam erişime sahip olacaktır. Sadece satın alınan değil.

Sanırım, sorum şu ki, her abonelik/satın alma işleminin cihazımda bulunan kullanıcılara bağlı olması için, cihazda oturum açmış olan elma kimliği değil. Kalıcı kullanma

:

elma belgelerine göre (Esasen uygulamasına aktararak erişim onlarla hesabınızda değil, elma kimliği bağlıdır pandora veya spotify, ister) Kendi Sunucunuz Makbuzunuzun bir kopyasını sunucunuza bir çeşit kimlik bilgileri veya tanımlayıcı ile birlikte gönderin, böylece hangi makbuzların belirli bir kullanıcıya ait olduğunu takip edebilirsiniz. Örneğin, kullanıcıların kendilerini bir e-posta veya kullanıcı adıyla ve ayrıca bir parola ile kendilerini sunucunuza tanıtmasına izin verin. UIDevice'nin identifierForVendor özelliğini kullanmayın; aynı cihaz tarafından farklı bir cihazda yapılan satın alma işlemlerini tanımlamak ve geri yüklemek için kullanamazsınız, çünkü farklı cihazlar bu mülk için farklı değerlere sahiptir.

Firebase'i kullanarak böyle bir şey yapmaya nasıl giderim?

+0

Tek bir uygulama hesabıyla ilişkili tek bir abonelikli appleId gibi geliştirmek ve bundan sonra başka bir uygulama hesabı için geliştirmek ister misiniz? –

+0

bu yüzden temel olarak alımlarının apple ids'e bağlı olmasını istemiyorum, ancak uygulamam sayesinde oluşturdukları hesaba bağlı kalmak istiyorum. Daha iyi bir fikir vermek için kullanıcı oluşturma sayfasının bir ekran görüntüsünü ekledim –

cevap

3

İşlem iTunes'da tamamlandığında, bu satın alma işlemi için bir işlem makbuzu alırsınız. Bu makbuz, satın alma hakkında çeşitli bilgiler içerir. Bu makbuzu DB'nize kaydedebilirsiniz. Bu makbuzda, "original_transaciton_identifier (OTI)" adında bir alan vardır, bu tanımlayıcı Apple kimliğinden yapılan satın alma işleminin benzersiz kimliğini belirtir. Bu benzersiz tanıtıcıyı DB'nize ilk gönderen kullanıcı kimliğine karşı saklayın.

Şimdi, eğer kullanıcı kimliği A size bir OTI 11 gönderirse, DB'nize kullanıcı A'ya karşı saklayın. Kullanıcı B oturum açtığında ve satın almayı geri yüklemeye çalıştığında, güncel makbuzu sunucunuza gönderin, OTI'yi çıkarın. Bu makbuz, DB'nizde saklanan OTI'lerle karşılaştırır, eğer bir şey bulamazsanız, o zaman yeni bir satın alma anlamına gelir, aksi takdirde bu satın almanın kime ait olduğunu bilirsiniz ve bunun B kullanıcısına aynı şekilde bağlantı kurabilirsiniz. başka bir kullanıcı, yeni bir itunes hesabıyla alışveriş yapmayı deneyin.

+0

Kullanıcı A aboneliği iptal ederse ve B kullanıcısı aynı Apple kimliği kullanılarak aboneliği tekrar alırsa, OTI aynı kalır.Yeni satın alımın OTI'sini B ile karşılaştırdığımızda, DB ile bir sonuç elde edersek, sonuç A kullanıcısı satın almayı gerçekleştirir, ancak bu kullanıcı B olur. –

+0

Ama sizin DB'nizde A kullanıcısı hala aktif bir aboneliğe sahip ya da değil. Eğer A aktif bir üye değilse ve B aktif bir üye olmaya çalışıyorsa, ona aboneliği verebilir ya da iş gereksinimine bağlı olarak aboneliği veremezsiniz. İşin aslı, tam bilgiye sahip olmanız, bu bilgilerle yaptığınız şeylerin tamamen sizin için geliştirdiğiniz işe bağlı olmasıdır. –

+0

Kabul. Ancak, aboneliğin aktif olup olmadığı konusunda güvenemediğimiz hâlâ bir durumun var olduğunu düşünüyorum - bir abonelik süresi dolduğunda, Apple yenilemeyi kullanıcı için ödemeye çalışırken bir sürebilir. O sırada abonelik aktif değil, ancak kullanıcı da iptal etmedi. –