Adakah yang punya ide tentang cara mengatur ulang dan / atau menghapus kotak pasir pembelian dalam aplikasi iOS?
Saya memiliki aplikasi yang saya uji dengan kotak pasir, dan saya ingin menguji pembelian baru tanpa harus membuat pengguna uji baru setiap kali saya membeli sesuatu.
Jika saya tidak melakukan ini, maka saya (tentu saja) selalu mendapatkan pesan bahwa item pembelian dalam aplikasi telah dibeli ketika saya mengklik tombol beli aplikasi saya.
sumber
+
alamat email tidak dapat lagi digunakan untuk mendaftar ID Apple.Anda tidak dapat melakukan ini, sejauh yang saya tahu. Backend kotak pasir berfungsi seperti akun sungguhan - setelah dibeli, dibeli (dan karenanya Anda dapat menguji pemulihan). Anda harus melakukan sebagian besar pengembangan Anda dengan barang-barang toko yang dikesampingkan, dan kemudian ketika Anda mengujinya secara nyata, cukup berharap untuk membuat beberapa akun pengujian.
sumber
SKPaymentTransactionStateRestored
kembali dari app store, bukanSKPaymentTransactionStatePurchased
. Karena Anda tidak menggunakan uang sungguhan di sini, untuk semua maksud dan tujuan,SKPaymentTransactionStateRestored
setara 100%SKPaymentTransactionStatePurchased
sejauh pengujian berjalan. Menyetel ulang status aplikasi Anda ke "belum dibeli" sepenuhnya terserah Anda (cukup hapus entri rantai kunci yang relevan atau apa pun yang Anda gunakan untuk menyimpan cache bahwa "pengguna membeli X")Saya memiliki 2 item pembelian dalam aplikasi. 1 untuk produksi. dan yang lainnya untuk pengujian. ketika saya perlu "menghapus", saya menghapus item dalam aplikasi dan membuat yang baru (15 detik di itunes terhubung dan 1 detik untuk mengubah id produk dalam kode)
jika saya tidak perlu menguji "pengguna baru", saya menggunakan produksi dalam item aplikasi.
sumber
Nah, secara teknis Anda tidak membutuhkan itu.
Jika Anda mendapatkannya
SKPaymentTransactionStateRestored
, itu 100% setara dengan toko aplikasi yang memverifikasi pengguna dan memberinya pembelian. Saya memiliki sakelar seperti:Pertanyaan tentang memiliki logika aplikasi Anda / mengambil kembali pembelian itu sederhana: jika Anda menyimpan pembelian dalam cache di rantai kunci, hapus rantai kunci Anda. Jika Anda melakukannya dengan cara lain, cukup ubah status aplikasi lokal Anda untuk berpura-pura seperti pengguna tidak pernah membelinya sebelumnya. Dialog permintaan untuk membeli masih sama persis, satu-satunya perbedaan adalah ketika Anda menekan YA, Anda
SKPaymentTransactionStateRestored
malah diberikanSKPaymentTransactionStatePurchased
.sumber
Menghapus aplikasi Anda dan memasangnya kembali juga berfungsi untuk pengujian kotak pasir. Bergantung pada aplikasinya jelas, tetapi saya sedang menguji aplikasi berbasis langganan yang hanya membeli saat mendaftar saat ini jadi itu adalah solusi termudah.
sumber
Lihat SimStoreKit . Ini adalah "versi simulasi StoreKit iPhone, untuk menguji UI toko di Simulator iPhone, atau bahkan di perangkat tanpa harus menyiapkan IAP di Connect."
SimStoreKit menyimpan pembelian dalam default pengguna di bawah tombol
ILSimSKTransactions
. Jadi untuk menghapus semua pembelian yang dapat Anda lakukan:Di simulator, Anda cukup menghapus aplikasi dan menginstalnya lagi.
Saya telah berhasil menggunakan SimStoreKit untuk men-debug bagian depan toko aplikasi saya sebelum mengujinya dengan kotak pasir. Keunggulan dari library ini adalah dapat diatur untuk menggunakan nama kelas yang sama dengan framework StoreKit yang sebenarnya (dengan melakukan
#define ILSimReplaceRealStoreKit 1
sebelum melakukan#include <ILSimStoreKit.h>
).Di file sumber tempat saya perlu mengakses StoreKit, saya menyertakan file header ini:
Ini memiliki efek menggunakan SimStoreKit saat saya menjalankan simulator dan StoreKit yang sebenarnya saat saya menjalankan di perangkat.
sumber
sebagai alternatif untuk membuat beberapa solusi pengguna uji Anda dapat membuat beberapa tes dalam pembelian aplikasi di iTunes Connect maka Anda tidak perlu mengubah akun pengguna.
sumber
Tetap gunakan akun pengujian yang sama, memulihkan pembelian daripada menyelesaikan yang baru. Lagi pula, apakah Anda memulai pembelian baru atau memulihkan yang lama, APLIKASI ANDA akan melakukan hal yang sama (setidaknya pada awalnya, mungkin antarmuka pengguna akan diperbarui secara berbeda setelah selesai). Apple adalah orang-orang yang menangani berbagai hal secara berbeda dalam situasi yang berbeda itu - jangan khawatir tentang itu.
Tempatkan logika pengiriman Anda dalam kasus SKPaymentTransactionStateRestored dalam penerapan metode ini untuk pengujian:
Kemudian pastikan untuk memasukkan logika pengiriman tersebut ke dalam kasus SKPaymentTransactionStatePurchased.
Pada akhirnya, karena kebanyakan dari kita obsesif-kompulsif untuk berbagai tingkatan, lakukan tes akhir dengan akun baru (bukan masalah besar untuk membuat yang kedua untuk kepastian mutlak).
Hal terakhir yang perlu diperhatikan: pertimbangkan posisi apel. Jika ada masalah dengan pengembang yang harus membuang waktu membuat puluhan atau ratusan akun untuk menguji IAP secara menyeluruh, mereka akan menyelesaikan masalah tersebut. Tidak ada masalah.
sumber