2.2.2
(بسبب فشل أي إصدار أحدث على iOS بسبب # 279)
iOS
لا ينبغي إلقاء أي خطأ. تم الشراء بنجاح (مباشر وفي الإنتاج)
تم إرجاع خطأ E_UNKNOWN
من Promise
يبلغ تتبع أخطاء Sentry.io لدينا عن هذا:
{"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"}
جهاز حقيقي. عملاء مباشرون. فشل شديد الاتساق
عند اختبار الإجراء مع مستخدمي Sandbox ، لا يمكن تكرار الخطأ.
@ Gaia-Nutrition هل يمكنك التحقق من هذه المشكلة القديمة؟ قد يكون السبب نفسه.
https://github.com/dooboolab/react-native-iap/issues/201
JJMoon في # 201 الخطأ كان E_DEVELOPER_ERROR
وسببه عدم ملء قائمة validProducts
باستخدام getSubscriptions()
.
ومع ذلك ، أقوم باستدعاء الوظيفة قبل محاولة إجراء عملية السحب وأحصل أيضًا على خطأ مختلف.
لكن الآن بعد أن أفكر في الأمر. قد يحدث أن هناك بعض التأخير في الوقت بين getSubscriptions()
و buySubscription()
بسبب إعادة المستخدم النظر إذا كان يريد إجراء عملية الشراء. هل يمكن أن تكون هذه مشكلة؟ قد يكون التطبيق في الخلفية في هذه الأثناء.
تحرير: ولكن مرة أخرى يتم تنفيذ عملية الشراء بنجاح ، لذا يجب أن تكون المشكلة هي المكان الذي تتم فيه معالجة استجابة متجر التطبيقات
مرحبا،
نفس سلوك المشكلة مع "buyProductWithoutFinishTransaction" أو "buyProduct".
الإصدار 2.2.1
العائد المخزن
{
"framesToPop": 1,
"code": "E_UNKNOWN",
"nativeStackIOS": [...],
"userInfo": {
"NSLocalizedDescription": "Connexion à l’iTunes Store impossible"
},
"domain": "SKErrorDomain",
"line": 16,
"column": 1599,
"sourceURL": "..."
}
قمنا بتحديث الوحدة لأننا نعيد إنتاج هذا الخطأ عند الإنتاج بالإصدارات السابقة.
الجزء المثير للاهتمام هو أن عملية إعادة الشراء تفشل أيضًا للمستخدمين عند حدوث ذلك. يحدث فقط لحوالي 1٪ من مستخدمي iOS لدينا.
fierysolid @ نفس الحالة ، نحن حوالي 5٪ من عمليات الشراء على iOS الذين فشلوا. عندما يحاول العميل الشراء مرة أخرى ، تظهر له نافذة منبثقة لإعادة الشراء.
مرحباً بالجميع. آمل أن يتم إصلاحه في نسختنا الجديدة اليوم وهي 2.3.15
. لقد لاحظت أن استخدام NSDictionary
في نظام iOS ليس آمنًا للاستخدام وقد يتسبب في سلوك غير متوقع. لقد أصلحت هذا وآمل الآن أن يعمل بشكل جيد في كل جهاز. يرجى اختبار ذلك.
يرجى إعادة الفتح عندما لا تزال تواجه المشكلة.
تضمين التغريدة
ما زلت أتلقى هذه المشكلة أثناء استخدام buySubscription()
مع مستخدم اختبار وضع الحماية مع iPhone 6S.
{"userInfo":{"NSLocalizedDescription":"Cannot connect to iTunes Store"}}
@ danrevah إذن لقد جربت 2.3.15
؟ JJMoon هل يمكنك من فضلك اختبار هذا مرة أخرى؟
dooboolab نعم أنا باستخدام هذا الإصدار.
@ danrevah الرجاء محاولة 2.3.16
.
لقد نجحت dooboolab مرة واحدة ، لكن بينما حاولت مرة أخرى ظللت أتلقى هذه الأخطاء. (يستخدم الإصدار 2.3.17)
JJMoon هل لديك أي دليل على هذا؟ إنه يستخدم iPhone6S
لقد أعدت فتح المشكلة. ccJJMoon
إذا صوّت عدد أكبر من الأشخاص على هذه القضية ، فسنحاول جاهدة البحث في هذا الأمر بعمق أكبر.
danrevah أرجو الرجوع إلى هذه الوثيقة.
https://developer.apple.com/library/archive/documentation/NetworkingInternet/Conceptual/StoreKitGuide/Chapters/Subscriptions.html#//apple_ref/doc/uid/TP40008267 -CH7-SW6
لاختبار الاشتراك في وضع الحماية ، تحتاج إلى إعادة شراء الاشتراك بعد مرور بعض الوقت.
وقد تحتاج إلى إلغاءه للشراء مرة أخرى.
وهناك بعض ردود الفعل الغريبة من خادم Apple sandbox ، مما يجعل الاختبار أكثر صعوبة.
إذا كانت حالة JJMoon هي المشكلة ، فقد تضمين التغريدة
JJMoon لقد واجهت نفس المشكلة. اي حل؟ يطرح buySubscription استثناءًا ومع ذلك يتم خصم الدفع. أحتاج إلى بيانات النتائج لتخزينها والتحقق من صحتها.
تضمين التغريدة
+1 لدي نفس المشكلة
حاول استخدام addAdditionalSuccessPurchaseListenerIOS في buySubscription
أيضًا. هذه هي نفس المشكلة كما في # 307.
حاول استخدام addAdditionalSuccessPurchaseListenerIOS في
buySubscription
أيضًا. هذه هي نفس المشكلة كما في # 307.
هل هناك شخص يستخدم بالفعل في الإنتاج؟
hyochan ، لقد حاولت القيام بذلك ولكن دون جدوى.
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();
});
}
}
cbfranca يرجى اتباع الكود الفعلي. أنت لا تستخدم حتى promises
. يجب أن تستمع إلى addAdditionalSuccessPurchaseListenerIOS
بعد رفض الوعد.
كما أنك لا تحتاج إلى المزيد من Platform.OS === 'ios'
.
تضمين التغريدة
آسف لجهلي ، لكن لا أعتقد أنني فهمت بشكل صحيح. لقد اتبعت نفس قواعد المثال ، بما يناسب السيناريو الخاص بي. لقد ابتكرت فكرة تجريدية تتعامل مع هذا الوعد باستخدام عدم التزامن / الانتظار. تم إرجاع كائن الاشتراك هذا من خلال تجريدي.
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;
}
تضمين التغريدة
""
static PurchaseSubscriptionIOS = غير متزامن (subscriptionID) => {
انتظار KinvoBilling.getSubscriptions () ،
محاولة {
const PurchaseResult = await KinvoBilling.buySubscription (subscriptionID) ؛
} catch (يخطئ) {
اشتراك const = RNIap.addAdditionalSuccessPurchaseListenerIOS (غير متزامن (شراء) => {
// dooboolab => تحقق من المكالمة هنا.
this.setState ({إيصال: purchase.transactionReceipt}، () => this.goToNext ()) ؛
اشتراك إزالة () ؛
}
}
عودة الشراء
}
""
تحقق من الرمز أعلاه. أعتقد أنك بحاجة إلى إعادة بناء كودك ليتناسب مع دورة حياته.
hyochan لا يعمل بالنسبة لي.
سيناريو الاختبار الخاص بي هو:
شك آخر: هل يجب علي استخدام finishTransaction () في الاشتراكات أيضًا؟
أنا أرى هذا الخطأ أيضًا. وأعتقد أنني أعرف طريقة واحدة لإعادة إنتاجه.
^ 2.4.1
https://github.com/expo/react-native/archive/sdk-32.0.0.tar.gz
iOS ، عند الاختبار في TestFlight على جهاز حقيقي.
لقد لاحظت أنه عند استدعاء أي من وظائف RNIap في تطبيقي ، سيطلب مني iOS إدخال كلمة مرور لمستخدم iTunes / App Store سابق (قمت بتسجيل الخروج واستبداله عبر إعدادات iOS). قرأت في مكان ما عبر الإنترنت أن هذه مشكلة تجذب مستخدمي iPhone من وقت لآخر: في بعض الأحيان يتم شراء تطبيق بحساب iTunes واحد ، ثم يتم تحويل الهاتف إلى حساب iTunes جديد ، لكن التطبيق يستمر في طلب كلمة المرور الخاصة بـ حساب iTunes القديم.
حاولت حذف تطبيقي (و TestFlight) وإعادة التثبيت مع مستخدم متجر التطبيقات الجديد ، ولكن دون جدوى. كانت الطريقة الوحيدة للتخلص من هذا السلوك هي مسح الجهاز. بمجرد القيام بذلك ، لم يعد بإمكاني إعادة إنتاج هذا الخطأ.
{
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}
}
}
}
أمل أن هذا يساعد شخصاما!
تضمين التغريدة
بعد تجربة العديد من الأشياء ، ما زلت أعاني من نفس المشكلة وأكثر. في الكود أدناه ، إرجاع RNIap.buySubscription (sku) غير محدد. من فضلك ، هل قام أحد بحلها؟
""
static PurchaseSubscriptionIOS = غير متزامن (subscriptionID) => {
انتظار 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: نشهد هذه المشكلة كانت جيدة. يبدو أنه يحدث لحوالي 10٪ من مستخدمينا حاليًا. سنحاول إضافة هذا المستمع ، لكنني لا أعتقد أن هذا حل رائع في النهاية. hyochan هل هناك أي طريقة يمكننا من خلالها الحصول على معلومات أكثر تفصيلاً في الحالات التي يُلقي فيها هذا الأمر ، أم أنها استجابة قياسية من واجهات برمجة تطبيقات StoreKit؟ في كل حالة خطأ ، يبدو أن الرسالة "لا يمكن الاتصال بـ iTunes Store" ، حتى عندما تكون عملية الشراء ناجحة.
لدينا مشكلة مشابهة جدًا مع 3.4.6: فشلت محاولة الشراء الأولى مع E_UNKOWN
، ونجحت إعادة المحاولة. ومع ذلك ، يحدث هذا بالنسبة لنا مع buyProduct
، وليس مع buySubscription
. hyochan هل يمكن أن يكون هذا هو نفس السبب الجذري؟
مرحبا! أواجه نفس المشكلة بعد الاتصال بـ RNIap.requestSubscription () أحصل على نتيجة غير محددة لكن الدفع نجح ، يتم خصم رسوم من بطاقة الائتمان.
الطريقة الوحيدة لهذا المستخدم لتجاوزها هي استعادة الشراء.
هل حصل أي شخص على إصلاح لهذا؟ أنا أستخدم الإصدار 3.5.9
التعليق الأكثر فائدة
: +1: نشهد هذه المشكلة كانت جيدة. يبدو أنه يحدث لحوالي 10٪ من مستخدمينا حاليًا. سنحاول إضافة هذا المستمع ، لكنني لا أعتقد أن هذا حل رائع في النهاية. hyochan هل هناك أي طريقة يمكننا من خلالها الحصول على معلومات أكثر تفصيلاً في الحالات التي يُلقي فيها هذا الأمر ، أم أنها استجابة قياسية من واجهات برمجة تطبيقات StoreKit؟ في كل حالة خطأ ، يبدو أن الرسالة "لا يمكن الاتصال بـ iTunes Store" ، حتى عندما تكون عملية الشراء ناجحة.