2.2.2
(karena ada versi yang lebih baru gagal di iOS karena # 279)
iOS
Tidak ada kesalahan yang harus dilakukan. Pembelian berhasil (langsung dan dalam produksi)
E_UNKNOWN
error dikembalikan dari Promise
Pelacakan kesalahan Sentry.io kami melaporkan ini:
{"framesToPop":1,"code":"E_UNKNOWN","nativeStackIOS":["0 LuCoaching 0x000000010062f6fc LuCoaching + 1996540","1 LuCoaching 0x000000010060aa98 LuCoaching + 1845912","2 LuCoaching 0x00000001007cad98 __cxa_throw + 438380","3 LuCoaching 0x00000001007cc62c __cxa_throw + 444672","4 libdispatch.dylib 0x000000019d078484 <redacted> + 16","5 libdispatch.dylib 0x000000019d025610 <redacted> + 56","6 LuCoaching 0x00000001007cc46c __cxa_throw + 444224","7 libdispatch.dylib 0x000000019d0776c8 <redacted> + 24","8 libdispatch.dylib 0x000000019d078484 <redacted> + 16","9 libdispatch.dylib 0x000000019d0249ec <redacted> + 1068","10 CoreFoundation 0x000000019d5ce1bc <redacted> + 12","11 CoreFoundation 0x000000019d5c9084 <redacted> + 1964","12 CoreFoundation 0x000000019d5c85b8 CFRunLoopRunSpecific + 436","13 GraphicsServices 0x000000019f83c584 GSEventRunModal + 100","14 UIKitCore 0x00000001ca444bc8 UIApplicationMain + 212","15 LuCoaching 0x000000010044d110 LuCoaching + 20752","16 libdyld.dylib 0x000000019d088b94 <redacted> + 4"],"userInfo":{"NSLocalizedDescription":"Verbindung mit iTunes Store nicht möglich"},"domain":"SKErrorDomain","line":26,"column":1877,"sourceURL":"/var/containers/Bundle/Application/818C8439-E250-42E8-AD57-EC4FB5FE5547/LuCoaching.app/main.jsbundle"}
Perangkat Nyata. Pelanggan langsung. Sangat konsisten gagal
Saat menguji prosedur dengan pengguna Sandbox kesalahan tidak dapat direproduksi.
@ Gaia-Nutrition Maukah Anda memeriksa edisi lama ini? Mungkin penyebabnya sama.
https://github.com/dooboolab/react-native-iap/issues/201
@JJMoon di # 201 kesalahannya adalah E_DEVELOPER_ERROR
dan disebabkan oleh tidak mengisi daftar validProducts
menggunakan getSubscriptions()
.
Namun, saya memanggil fungsi tersebut sebelum mencoba melakukan pembayaran dan saya juga mendapatkan kesalahan yang berbeda.
Tapi sekarang aku memikirkannya. Bisa saja terjadi penundaan waktu yang cukup lama antara panggilan getSubscriptions()
dan buySubscription()
disebabkan oleh pengguna yang mempertimbangkan kembali jika dia ingin melakukan pembelian. Mungkinkah ini menjadi masalah? Sementara itu, aplikasi mungkin telah di-background.
EDIT: Tapi sekali lagi pembelian berhasil dieksekusi sehingga masalahnya harus di mana respon toko aplikasi sedang diproses
Halo,
Perilaku masalah yang sama dengan "buyProductWithoutFinishTransaction" atau "buyProduct".
Versi 2.2.1
pengembalian disimpan
{
"framesToPop": 1,
"code": "E_UNKNOWN",
"nativeStackIOS": [...],
"userInfo": {
"NSLocalizedDescription": "Connexion à l’iTunes Store impossible"
},
"domain": "SKErrorDomain",
"line": 16,
"column": 1599,
"sourceURL": "..."
}
Kami memperbarui modul karena kami mereproduksi bug ini pada produksi dengan versi sebelumnya.
Bagian yang menarik adalah bahwa pembelian pemulihan juga gagal untuk pengguna saya saat ini terjadi. Ini hanya terjadi pada sekitar 1% pengguna iOS kami.
@fierysolid Kasus yang sama, kami sekitar 5% pembelian di iOS yang gagal. Saat pelanggan mencoba untuk membeli lagi, dia memiliki pop-up pemulihan pembelian.
Halo semuanya. Saya harap ini diperbaiki dalam versi baru kami hari ini yaitu 2.3.15
. Saya telah memperhatikan bahwa menggunakan NSDictionary
di ios murni tidak aman untuk digunakan dan dapat menyebabkan perilaku yang tidak terduga. Saya telah memperbaikinya dan berharap sekarang berfungsi dengan baik di setiap perangkat. Silakan uji ini.
Harap buka kembali saat masih menghadapi masalah.
@doobool
Saya masih mendapatkan masalah ini saat menggunakan buySubscription()
dengan pengguna penguji kotak pasir dengan iPhone 6S.
{"userInfo":{"NSLocalizedDescription":"Cannot connect to iTunes Store"}}
@danrevah Jadi Anda telah mencoba versi baru kami yaitu 2.3.15
? @JJMoon Bisakah Anda menguji ini sekali lagi?
@ dooboolab ya Saya menggunakan versi itu.
@danrevah Silakan coba 2.3.16
.
@dooboolab berhasil sekali, tetapi ketika saya mencoba lagi saya terus mendapatkan kesalahan ini. (digunakan v 2.3.17)
@JJMoon Apakah Anda punya petunjuk tentang ini? dia menggunakan iPhone6S
Saya telah membuka kembali masalahnya. cc @JAV_banget
Jika lebih banyak orang yang memberikan suara untuk masalah ini, kami akan berusaha lebih keras untuk menggali lebih dalam.
@danrevah Saya harap Anda merujuk pada dokumen ini.
https://developer.apple.com/library/archive/documentation/NetworkingInternet/Conceptual/StoreKitGuide/Chapters/Subscriptions.html#//apple_ref/doc/uid/TP40008267 -CH7-SW6
Untuk menguji langganan dalam mode kotak pasir, Anda perlu membeli kembali langganan setelah beberapa waktu.
Dan Anda mungkin perlu membatalkannya untuk membeli lagi.
Dan ada beberapa reaksi aneh dari server kotak pasir Apple, yang membuat pengujian lebih sulit.
Jika kasus @JJMoon adalah masalahnya, kami dapat menutupnya lagi. Silakan buka kembali jika Anda masih membutuhkan bantuan untuk yang satu ini. @bayu_joo
@JJoon Saya menghadapi masalah yang sama. ada solusi? buySubscription memberikan pengecualian, namun pembayaran dipotong. Saya perlu memiliki data hasil untuk menyimpan dan memvalidasinya.
@yoyan
+1 Saya punya masalah yang sama
Coba gunakan addAdditionalSuccessPurchaseListenerIOS di buySubscription
juga. Ini adalah masalah yang sama seperti di # 307.
Coba gunakan addAdditionalSuccessPurchaseListenerIOS di
buySubscription
juga. Ini adalah masalah yang sama seperti di # 307.
Apakah seseorang sudah menggunakan dalam produksi?
@hyochan , saya sudah mencoba melakukan itu tetapi tidak berhasil.
if (subscription && subscription.success) {
this.props.subscribe(subscription.result);
} else {
if (Platform.OS === 'ios') {
const sub = RNIap.addAdditionalSuccessPurchaseListenerIOS(async (purchase) => {
this.props.subscribe(purchase); // -> This code is never fired
sub.remove();
});
}
}
@cbanca Harap ikuti kode yang sebenarnya. Anda bahkan tidak menggunakan promises
. Anda harus mendengarkan addAdditionalSuccessPurchaseListenerIOS
setelah penolakan janji.
Anda juga tidak perlu tambahan Platform.OS === 'ios'
.
@yoyok
Maaf atas ketidaktahuan saya, tapi saya rasa saya tidak mengerti dengan benar. Saya mengikuti dasar yang sama dari contoh, menyesuaikan skenario saya. Saya membuat abstraksi yang memperlakukan janji ini menggunakan async / await. Objek langganan ini dikembalikan oleh abstraksi saya.
static purchaseSubscription(newSubscriptionID, currentSubscriptionID) {
if (Platform.OS === 'ios') {
const purchaseResult = KinvoBilling.purchaseSubscriptionIOS(newSubscriptionID);
return purchaseResult;
}
const purchaseResult = KinvoBilling.purchaseSubscriptionANDROID(newSubscriptionID, currentSubscriptionID);
return purchaseResult;
}
static purchaseSubscriptionANDROID = async (newSubscriptionID, currentSubscriptionID) => {
const hasCurrentSubscription = currentSubscriptionID !== null;
if (hasCurrentSubscription) {
const purchaseResult = KinvoBilling.updateSubscription(newSubscriptionID, currentSubscriptionID);
return purchaseResult;
}
const purchaseResult = KinvoBilling.buySubscription(newSubscriptionID);
return purchaseResult;
}
static purchaseSubscriptionIOS = async (subscriptionID) => {
await KinvoBilling.getSubscriptions();
const purchaseResult = await KinvoBilling.buySubscription(subscriptionID);
return purchaseResult;
}
@bayu_joo
``
static purchaseSubscriptionIOS = async (subscriptionID) => {
menunggu KinvoBilling.getSubscriptions ();
coba {
const purchaseResult = menunggu KinvoBilling.buySubscription (subscriptionID);
} tangkap (err) {
const subscription = RNIap.addAdditionalSuccessPurchaseListenerIOS (async (pembelian) => {
// dooboolab => periksa panggilan di sini.
this.setState ({recehan: purchase.transactionReceipt}, () => this.goToNext ());
subscription.remove ();
}
}
return purchaseResult;
}
`` ''
Periksa kode di atas. Saya pikir Anda perlu merefaktor kode Anda agar sesuai dengan siklus hidupnya.
@hyochan Tidak bekerja untuk saya.
Skenario pengujian saya adalah:
Keraguan lain: Apakah saya harus menggunakan finishTransaction () di langganan juga?
Saya melihat kesalahan ini juga. Dan saya rasa saya tahu satu cara untuk mereproduksinya.
^ 2.4.1
https://github.com/expo/react-native/archive/sdk-32.0.0.tar.gz
iOS, saat menguji di TestFlight di perangkat nyata.
Saya perhatikan bahwa ketika ada fungsi RNIap yang dipanggil di aplikasi saya, iOS akan meminta saya memasukkan kata sandi untuk pengguna iTunes / App Store sebelumnya (yang telah saya logout dan ganti melalui Pengaturan iOS). Saya membaca di suatu tempat secara online bahwa ini adalah masalah yang sering mengganggu pengguna iPhone: terkadang aplikasi dibeli dengan satu akun iTunes, kemudian ponsel dialihkan ke akun iTunes baru, tetapi aplikasi terus meminta kata sandi untuk akun iTunes lama.
Saya mencoba menghapus aplikasi saya (dan TestFlight) dan menginstal ulang dengan pengguna App Store baru, tetapi tidak berhasil. Satu-satunya cara saya bisa menghilangkan perilaku ini adalah dengan menghapus perangkat. Setelah saya melakukan ini, saya tidak dapat lagi mereproduksi kesalahan ini.
{
code: E_UNKNOWN,
column: 1565,
domain: NSURLErrorDomain,
framesToPop: 1,
line: 20,
nativeStackIOS: [...],
sourceURL: ...,
userInfo: {
_kCFStreamErrorCodeKey: -4,
_kCFStreamErrorDomainKey: 4,
NSErrorFailingURLKey: None,
NSErrorFailingURLStringKey: https://p100-sandbox.itunes.apple.com/WebObjects/MZFinance.woa/wa/inAppBuy,
NSLocalizedDescription: Cannot connect to iTunes Store,
NSUnderlyingError: {
code: "-1005",
domain: "kCFErrorDomainCFNetwork",
message: "underlying error",
nativeStackIOS: [...],
userInfo:{"NSErrorPeerAddressKey":null,"_kCFStreamErrorCodeKey":-4,"_kCFStreamErrorDomainKey":4}
}
}
}
Semoga ini bisa membantu seseorang!
@yoyok
Setelah mencoba banyak hal, saya masih memiliki masalah yang sama dan banyak lagi. Pada kode di bawah, RNIap.buySubscription (sku) mengembalikan tidak terdefinisi. Tolong, apakah seseorang menyelesaikannya?
``
static purchaseSubscriptionIOS = async (subscriptionID) => {
menunggu KinvoBilling.getSubscriptions ();
try {
const purchaseResult = await RNIap.buySubscription(subscriptionID);
return createResponse(true, purchaseResult);
} catch (error) {
const subscription = RNIap.addAdditionalSuccessPurchaseListenerIOS(async (purchase) => {
// dooboolab => check the call here.
console.tron.log('--- ERROR ----');
console.tron.log(error);
console.tron.log('--- PURCHASE ----');
console.tron.log(purchase);
const result = purchase;
subscription.remove();
console.tron.log(result);
if (result) {
return createResponse(true, result);
}
return createResponse(false, result);
});
}
};
``
: +1: Kami mengalami masalah ini dengan baik. Tampaknya ini terjadi pada sekitar 10% pengguna kami saat ini. Kami akan mencoba menambahkan pendengar ini, tetapi saya tidak berpikir bahwa pada akhirnya ini adalah solusi yang bagus. @hyochan Adakah cara agar kami dapat memperoleh informasi yang lebih detail dalam kasus di mana ini terjadi, atau apakah itu merupakan respons standar dari API StoreKit? Dalam setiap kasus kesalahan, pesan sepertinya "Tidak dapat terhubung ke iTunes Store", bahkan ketika pembelian berhasil.
Kami memiliki masalah yang sangat mirip dengan 3.4.6: Upaya pembelian pertama gagal dengan E_UNKOWN
, percobaan ulang berhasil. Namun, bagi kami ini terjadi dengan buyProduct
, bukan dengan buySubscription
. @hyochan, apakah ini masih bisa menjadi penyebab utama yang sama?
Halo! Saya mengalami masalah yang sama setelah menelepon RNIap.requestSubscription () Saya mendapatkan hasil yang tidak ditentukan tetapi pembayaran berhasil, kartu kredit dikenai biaya.
Satu-satunya cara pengguna itu melewatinya adalah dengan memulihkan pembelian.
Apakah ada yang bisa memperbaikinya? Saya menggunakan versi 3.5.9
Komentar yang paling membantu
: +1: Kami mengalami masalah ini dengan baik. Tampaknya ini terjadi pada sekitar 10% pengguna kami saat ini. Kami akan mencoba menambahkan pendengar ini, tetapi saya tidak berpikir bahwa pada akhirnya ini adalah solusi yang bagus. @hyochan Adakah cara agar kami dapat memperoleh informasi yang lebih detail dalam kasus di mana ini terjadi, atau apakah itu merupakan respons standar dari API StoreKit? Dalam setiap kasus kesalahan, pesan sepertinya "Tidak dapat terhubung ke iTunes Store", bahkan ketika pembelian berhasil.