1.20
рдХреЗрд╡рд▓ iOS рдкрд░ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЧрдпрд╛
рд╕рджрд╕реНрдпрддрд╛ рдХреА рд╕реВрдЪреА рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ
RNIap.getSubsults рддреНрд░реБрдЯрд┐: [TypeError: рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рдХреЛрдИ рд╡рд╕реНрддреБ рдирд╣реАрдВ рд╣реИ ('RNIapIos.getItems' рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди)]
рджреЛрдиреЛрдВ
`` ``
const рдЖрдЗрдЯрдорд╕реНрдХрд╕ = Platform.select ({
ios: [
'com.shares.sharesapp', // рдореИрдВрдиреЗ рднреА рдХреЛрд╢рд┐рд╢ рдХреА ['рдмреБрдирд┐рдпрд╛рджреА', 'рдХреНрд▓рд╛рд╕рд┐рдХ', 'рдореИрдХреНрд╕', 'рдкреНрд▓рд╕'] редред
],
рдПрдВрдбреНрд░реЙрдпрдб: [
'com.shares.sharesapp'
],
};
async рдШрдЯрдХрдбрд┐рдорд╛рдЙрдВрдЯ () {
рдкреНрд░рдпрддреНрди {
рдкреНрд░рддреАрдХреНрд╖рд╛ RNIap.prepare ();
}
рдкрдХрдбрд╝рдирд╛ (рдЧрд▓рддреА рдХрд░рдирд╛) {
рдХрдВрд╕реЛрд▓.рд▓реЙрдЧ ("RNIap.prepare рддреНрд░реБрдЯрд┐:", рдЗрд░ 1);
}
рдЖрдЦрд┐рд░рдХрд╛рд░ {
рдХрдВрд╕реЛрд▓.рд▓реЙрдЧ ("рдЕрдВрдд рдореЗрдВ");
рдкреНрд░рдпрддреНрди {
const рдЙрддреНрдкрд╛рджреЛрдВ = RNIap.getSubsults (itemSkus) рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдВ;
рдХрдВрд╕реЛрд▓.рд▓реЙрдЧ ('рд╕рдмреНрд╕рдХреНрд░рд┐рдкреНрд╢рди', рдЙрддреНрдкрд╛рдж);
}
рдкрдХрдбрд╝рдирд╛ (рдЧрд▓рддреА рдХрд░рдирд╛) {
рдХрдВрд╕реЛрд▓.рд▓реЙрдЧ ("RNIap.getSubsults рддреНрд░реБрдЯрд┐:", рдЗрд░);
}
}
}
`` ``
рдореИрдВ рд╕рд┐рдореНрдпреБрд▓реЗрдЯрд░ рдореЗрдВ рд╕реИрдВрдбрдмреЙрдХреНрд╕ рдЦрд╛рддреЗ рд╕реЗ рдЬреБрдбрд╝рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реВрдВ
рдФрд░ рдЕрд╕рд▓реА рдбрд┐рд╡рд╛рдЗрд╕ рдореЗрдВ, рдпреЗ рдкреЙрдкрдЕрдк
рдРрдк рд╕реНрдЯреЛрд░ рдХрдиреЗрдХреНрдЯ рдореЗрдВ рд╕рджрд╕реНрдпрддрд╛ рдХреА рд╕реВрдЪреА рдпрд╣рд╛рдВ рджреА рдЧрдИ рд╣реИ
рдХреНрдпрд╛ рдХреЛрдИ рдХреГрдкрдпрд╛ рдореБрдЭреЗ рдЗрд╕реЗ рдЕрдЪреНрдЫреЗ рдЖрдХрд╛рд░ рдореЗрдВ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИ?
рдореИрдВрдиреЗ рднреА рдХреЛрд╢рд┐рд╢ рдХреА
const purchases = await RNIap.getAvailablePurchases();
console.info('Available purchases :: ', purchases);
рдкрд░рд┐рдгрд╛рдо рд╕рдорд╛рди:
RNIap.getSubscriptions error : [TypeError: undefined is not an object (evaluating 'RNIapIos.getAvailableItems')]
рдФрд░ App Store Connect рдореЗрдВ ProductID рдХреЛ "com.shares.sharesapp.basic" рдХреЗ рд░реВрдк рдореЗрдВ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдФрд░
const itemSkus = Platform.select({
ios: [
'com.shares.sharesapp.basic'
],
рдХреЛрдИ рдФрд░ рд╕рдлрд▓рддрд╛ рдирд╣реАрдВ ...
рдореБрдЭреЗ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рд╡рд░реНрдгрд┐рдд рдХреЗ рд░реВрдк рдореЗрдВ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рдерд╛ ...
`` ``
рдореИрдиреБрдЕрд▓ рд╕реНрдерд╛рдкрдирд╛
рдЖрдИрдУрдПрд╕
In XCode, in the project navigator, right click Libraries тЮЬ Add Files to [your project's name]
Go to node_modules тЮЬ react-native-iap and add RNIap.xcodeproj
In XCode, in the project navigator, select your project. Add libRNIap.a to your project's Build Phases тЮЬ Link Binary With Libraries
Run your project (Cmd+R)
`` ``
рдЗрд╕ рдмрд╛рд░ рдЗрд╕рдХреЗ рдмрд╛рдж рдореБрдЭреЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рд╛ (рдЕрдкрдиреЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдбрд┐рд╡рд╛рдЗрд╕ рдкрд░ рдбрд┐рд╕реНрдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВ), рдореИрдВрдиреЗ рд╕реИрдВрдбрдмреЙрдХреНрд╕ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд┐рдпрд╛, рдореИрдВ рд╕рджрд╕реНрдпрддрд╛ рд╡рд┐рд╡рд░рдг рдХреЛ рд╣рдбрд╝рдкрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдерд╛ grab
async componentDidMount() {
try {
await RNIap.prepare();
}
catch (err1) {
console.log("RNIap.prepare error : ", err1);
}
finally {
console.log("finally");
try {
console.log("itemSkus : ", itemSkus);
const products = await RNIap.getSubscriptions(itemSkus);
console.log('Subscriptions', products);
}
catch (err) {
console.log("RNIap.getSubscriptions error : ", err);
}
}
}
рдкрд░рд┐рдгрд╛рдо:
itemSkus : Array [
"com.shares.sharesapp.basic",
]
Subscriptions Array [
Object {
"currency": "EUR",
"description": "***",
"localizedPrice": "3,99┬атВм",
"price": "3.99",
"productId": "com.shares.sharesapp.basic",
"title": "Abonnement BASIQUE",
"type": "Do not use this. It returned sub only before",
},
]
FYI рдХрд░реЗрдВ, RNIap.getSubsults (itemSkus) рд╕рд┐рдореНрдпреБрд▓реЗрдЯрд░ рдореЗрдВ рднреА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рдореБрдЭреЗ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рд╡рд░реНрдгрд┐рдд рдХреЗ рд░реВрдк рдореЗрдВ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рдерд╛ ...
`` ``
рдореИрдиреБрдЕрд▓ рд╕реНрдерд╛рдкрдирд╛
рдЖрдИрдУрдПрд╕
`` ``