ããã«ã¡ã¯ã
Expoã䜿çšããŠãããžã§ã¯ããäœæããŠããŸãã ç§ãã¡ã®ãããžã§ã¯ãã§ã¯ã1ã€ã®éèŠãªãããã¯ã¯ã¢ããªå
賌å
¥ã§ãã ç§ãã¡ãæäŒã£ãŠãããŸãã
Expoã䜿çšããŠã¢ããªå
賌å
¥ãå®è£
ããæ¹æ³ãšããããå®è£
ããããã«åŸãå¿
èŠã®ããæé ã¯äœã§ããã
åã«ïŒ
detached
exp detach
å®è¡ããŸãmaster
ã«æ»ã£ãŠãjsã³ãŒããè¿œå ããŸãmaster
ã³ãŒãã£ã³ã°ãããšãã¯ãIAPã¢ãžã¥ãŒã«ã³ãŒãã次ã®ããã«ã©ããããŸããimport { NativeModules } from 'react-native';
const { RNIapModule } = NativeModules;
function hasIAP() {
return !!NativeModules.RNIapModule;
}
ããã§ã®äžè¬çãªèãæ¹ã¯exp detach
ããããžã§ã¯ããRNã¢ããªãšããŠäœ¿çšã§ããããã«/ios
ïŒ /android
ãã©ã«ããŒã衚瀺ããã ãã§ãã
éåžžã®Expoã¢ããªã®ãã¹ãŠã®æ©èœãåŒãç¶ãå©çšã§ããŸããfastlaneã䜿çšããŠãããã€ããã ããªã®ã§ããã€ãã£ããªãã®ãããŸã䜿çšããå¿
èŠã¯ãããŸããã
æåŸã«ããã©ã³ãã¯SDKããŒãžã§ã³ã®æŽæ°ã«åœ¹ç«ã¡ãŸãã äœããã®çç±ã§æŽæ°ã«åé¡ãããå Žåã¯ãããäžåºŠãã¿ããããŠããã®ã©ã€ãã©ãªãããäžåºŠè¿œå ããããšãã§ããŸãã
åé¡ã¯ããããããªãExpoããå§ããã®ããšããããšã§ãã
@ImArtur
å°ãªããšãç§ã«ãšã£ãŠã¯ãExpoéçºç°å¢ã¯ããã€ãã£ããã«ããäœæãããããã¯ããã«ç°¡åã«æäœã§ããŸãã ãŸããåäžã®ã€ã³ã¿ãŒãã§ã€ã¹ãåããç¡æã®ãã«ããã©ãããã©ãŒã ããã·ã¥éç¥ãµãŒãã¹ãããããšãéåžžã«äŸ¿å©ã§ãã
@KevinColemanIncã¯ãã ç§ã¯ä»¥åã«å芧äŒã®ãããŒãŠãŒã¶ãŒã ã£ãã®ã§ç解ããŠããŸãã ç§ã¯æ¬åœã«expoã«iap
ã¢ãžã¥ãŒã«ãçµ±åããããšæã£ãŠããŸãã ãã ãããšãã¹ããiap
æ©èœãå«ãç°å¢ãç¶æããã®ã¯ç°¡åã§ã¯ãªãããšãç解ããŠããŸãã Appleã¯æåã«ã¢ããªã¹ãã¢ã®Expo Client
ã¢ããªãæåŠããŸãã
@dooboolab
ä»ã®äººãææ¡ããŠããããã«ãããããã¹ãã®ããã«ã¹ã¿ãã¢ãŠããããã ããªããç§ã¯ã¯ãŒã«ã ããã ç§ã¯éçºäœéšã®ããã®å芧äŒã奜ãã§ãã
ç§ã¯ãããgitã§ç¬èªã®ãã©ã³ãã«åå²ããdevãã©ã³ãã®ãšãã¹ãããã¬ã³ããªãŒã«ä¿ã€ããšãæ€èšããŠããŸãã ãããã€ã®æéã«ãªã£ãããæåºãããã³ãŒããããŒãžããŠãã¹ããããšãã¢ããªããããã€ãããŸãã
@ImArturã®è³ªåã¯ããå芧äŒã§ã®ã¢ããªå è³Œå ¥ãã§ãã Expoã®é·æãšçæã«ã€ããŠã¯ãã¡ããã芧ãã ããïŒ //docs.expo.io/versions/latest/introduction/why-not-expo
@EvanBacon
ããã«ã¡ã¯ããã®èšäºãããããšãïŒ ïŒãã¿ããåŸïŒããã¿ããããã©ã³ãã§expãŸãã¯xcodeã䜿çšããŠãã«ããç¶è¡ããããšã«ãªã£ãŠããã®ãã©ããçåã«æã£ãŠããŸããïŒ ããããšãïŒ
@EvanBaconããiOSã§ãããã©ã®ããã«ãã¹ãããŠããŸããïŒ æ°ãããã«ããããã·ã¥ããŠããã§ãã¹ãããŸããããããšã以åã«ããŒã«ã«ã§iapsããã¹ãããæ¹æ³ã¯ãããŸããïŒ
éçºã®ããæç¹ã§ã¢ããªå è³Œå ¥ãå¿ èŠã«ãªãããšãããã£ãŠããå Žåã§ããCRNAã䜿çšããå¿ èŠããããŸããïŒ ãŸãã¯æåããRNãã€ãã£ãã«çŽæ¥è¡ããŸããïŒ
ãã¡ãããexpodevsã¯ããã«expoã¢ããªå è³Œå ¥ãå®è£ ããŸãã
@edoantoniocoç§ã¯ãããexpoã§åäœãããŸããã ã¢ã€ãã ãè³Œå ¥ããããã®iapãã¿ã³ã䜿çšããŠããŒãžãäœæããè³Œå ¥ããã¹ãããŠXcodeã§ãã«ãããå Žåã«ã®ã¿ãããã®ãã¿ã³ãæŒããŸãã ãã以å€ã®å Žåã¯ãå芧äŒã§æ§ç¯ããŸãã ããåãïŒ
é ããŠç³ãèš³ãããŸããã ãã¿ãããããšãã¯ããã€ãã£ãã³ãŒããè¿œå ããŠãããã€ã¹ã«ãã«ãããŸãã 次ã«ããã®ãã«ããExpoã¯ã©ã€ã¢ã³ãã®ããã«äœ¿çšããŸãïŒåäžã®ã¢ããªã®ã¿ãé€ãïŒã ç§ã¯ãŸã å芧äŒã«åºå·ããããšããå§ãããŸãã CRNAã¯Expoã«ãã£ãŠç¶æãããŠãããç§ãã¡ã®çŠç¹ã¯äž»ã«ãã®ç°å¢ã§ã©ã€ãã©ãªãæ©èœãããããšã«ãããŸãã Vanilla React Nativeã¯ãå€ãã®äžèŠãªã»ããã¢ãããå¿ èŠãšããã¢ãžã¥ãŒã«ã®å éšåäœã«ã€ããŠããå€ãã®ããšãç¥ã£ãŠããå¿ èŠããããŸãã
ããã«ã¡ã¯ãããªããäž»é¡ãæã¡åºããã®ã§ã ã¢ããªå è³Œå ¥ãExpoã§åŠçããã®ããé£ãããå Žåã Expoããåãé¢ããã«ã¢ããªãåçåããããã®æšå¥šããŒããããã¯äœã§ããïŒç§ã«ãšã£ãŠã¯ãä»ã®å€ãã®äººãšåæ§ã«ãå šäœçãªãšã¯ã¹ããªãšã³ã¹ãRNãããã¯ããã«ãã¬ã³ããªãŒã§ãäž¡æ¹ã®ãã©ãããã©ãŒã ã§ãã€ãã£ãã«ãªããããã¯ããã«è€éã§ã¯ãªããšããäºå®ã®ããã«Expoãå©çšããŠããŸãã ã§ã¯ãPayPalã§ãµãã¹ã¯ãªãã·ã§ã³ãã©ã³ã䜿çšããããšããã¯ã¬ãžããã«ãŒãã§æ¯æããåãåãããšãã§ããŸããïŒ ããšãã°ãWebãã¥ãŒã䜿çšããŠãGoogleãšAppleãExpoã¢ããªå ã«çµã¿èŸŒãããšãèš±å¯ããŠããŸããïŒ ããããšãã
@inglesuniversal
ãã®ãããªåé¡ã解決ãããã®ãåŸ ã€ã®ã«é£œããã®ã§ãããã ãã®äŸ¡å€ããããšããã°ãç§ãã¡ã¯å芧äŒãæšãŠãããšã«ãªããŸããã
ããã¯ééããªããã¹ããšããã€ãã®æ©èœïŒéç¥ãªã©ïŒã®ãµããŒãã«æ©æŠãå ããŸãããå°ãªããšãç§ã®éçºè ã¯ãå芧äŒãããããµããŒãããŠããªãã®ã§ããã¯äžå¯èœã§ãããšç§ã«èšãã®ããããããšãã§ããŸãã
Expoã¯æè¿ã2019幎ã®å°æ¥ã®èšç»ã«ã€ããŠãããçºè¡šnative modules
ããªã³ã¯ã§ããããã«ãªããŸãã
äžèšã®@EvanBaconã®ã³ãŒãã
ä»ã®äººããã®åé¡ã«ééããŸãããïŒ ããã¯ãç§ãæ£ãããªã³ã¯ãããŠããªãããšãæå³ããŸããïŒ
FWIWãreact-nativeãªã³ã¯ã¯æ©èœããããã§ã...ã
$ react-native link react-native-iap
rnpm-install info Linking react-native-iap ios dependency
rnpm-install info Platform 'ios' module react-native-iap has been successfully linked
rnpm-install info Linking react-native-iap android dependency
rnpm-install info Platform 'android' module react-native-iap has been successfully linked
ããããæåã§ãªã³ã¯ããå¿
èŠãããã®ã§ã¯ãªãããšæããŸãããããŸã§ã¯ãªã³ã¯ã§ããŸããã§ããã ã©ã€ãã©ãªãã©ã«ããèŠã€ãããŸããã
https://forums.expo.io/t/trouble-linking-with-expokit-unable-to-find-libraries-in-xcode/16710
@EvanBaconããã«ã¡ã¯ããµãŒã
詳ããæããŠããã ããŸããïŒ
RNiapãè©ŠããŠã¿ãŸãããªã³ã¯ããŸãã
ããããç§ã¯expãåãé¢ããŸããã
ããããç§ã¯iosdirã«è¡ããpodinstallãå®è¡ããŸãä»ããã¯ãã¹ãŠãã€ã³ã¹ããŒã«ããŠããŸã
次ã«äœãããã°ããã§ããïŒ
ããããšã
@cellisç§ã1é±éè©ŠããŠããã¢ããªå
æ©èœãã©ã®ããã«æ©èœããããã詳ããæããŠãã ãããã³ãŒãã衚瀺ããŠããã ããŸããïŒ
ããããšã
ãããã®ã€ã³ã¹ããŒã«åŸã«expoãŸãã¯xcodeã§ãã«ãããŸãããïŒ
ããããšã
éåžžè¡ãã®ãšåãããšããã¹ãŠè¡ããŸã
ãã¹ã¿ãŒã«æ»ã£ãŠjsã³ãŒããè¿œå ããŸã
ãã¹ã¿ãŒã§ã³ãŒãã£ã³ã°ãããšãã¯ãIAPã¢ãžã¥ãŒã«ã³ãŒãã次ã®ããã«ã©ããããŸãã
@EvanBaconäžèšã®è¡ã®æå³ã¯äœã§ããïŒ
åã«ïŒ
- æ°ãããã©ã³ããäœæããŸã
detached
exp detach
å®è¡ããŸã- éåžžè¡ãã®ãšåãããšããã¹ãŠè¡ããŸã
master
ã«æ»ã£ãŠãjsã³ãŒããè¿œå ããŸãmaster
ã³ãŒãã£ã³ã°ãããšãã¯ãIAPã¢ãžã¥ãŒã«ã³ãŒãã次ã®ããã«ã©ããããŸããimport { NativeModules } from 'react-native'; const { RNIapModule } = NativeModules; function hasIAP() { return !!NativeModules.RNIapModule; }
- ããã«ãããIAPã¡ãœãããåŒã³åºããšãã«ã³ãŒããã¯ã©ãã·ã¥ããªããªããŸãã
- IAPãå±éãŸãã¯ãã¹ããããšãã¯ãåãé¢ããããã©ã³ãã䜿çšããŸãããŸãã¯ããã©ã³ããå®å šã«ã¹ãããããŠãäžæ£ã«ãªããŸã> :)
ããã§ã®äžè¬çãªèãæ¹ã¯
exp detach
ããããžã§ã¯ããRNã¢ããªãšããŠäœ¿çšã§ããããã«/ios
ïŒ/android
ãã©ã«ããŒã衚瀺ããã ãã§ãã
éåžžã®Expoã¢ããªã®ãã¹ãŠã®æ©èœãåŒãç¶ãå©çšã§ããŸããfastlaneã䜿çšããŠãããã€ããã ããªã®ã§ããã€ãã£ããªãã®ãããŸã䜿çšããå¿ èŠã¯ãããŸããã
æåŸã«ããã©ã³ãã¯SDKããŒãžã§ã³ã®æŽæ°ã«åœ¹ç«ã¡ãŸãã äœããã®çç±ã§æŽæ°ã«åé¡ãããå Žåã¯ãããäžåºŠãã¿ããããŠããã®ã©ã€ãã©ãªãããäžåºŠè¿œå ããããšãã§ããŸãã
ããã«ã¡ã¯ãšãŽã¡ã³ã
ææ¡ããããšãããããŸãã ç§ã¯ã¢ããã€ã¹ã«åŸããŸãããããšã©ãŒã¯ãããŸããïŒreact-native-iapãæåã§ãªã³ã¯ããŸããïŒã ãã ããRNIap.initConnectionïŒïŒ;ã§ãã£ãŠããhasIAPé¢æ°ã¯falseãè¿ããŸãã trueãè¿ããŸãã ãã®åçŽãªã³ãŒãã§ãã¹ãããŸãã
async componentDidMount() {
try {
const result = await RNIap.initConnection();
console.log("hasIAP " + hasIAP()) // returns false
console.log('result', result); // returns true
} catch (err) {
console.warn(err.code, err.message);
}
}
äœãåé¡ã«ãªãã®ãç¥ã£ãŠããŸããïŒ ïŒãŸãã¯ãããèªãã§ãã人ïŒ
ããã¥ã¡ã³ãhttps://docs.expo.io/versions/v32.0.0/sdk/payments/ã«ãããšãããã€ã¹ã§æ¯æããèšå®ããŸãããïŒ ïŒã·ãã¥ã¬ãŒã¿ãŒã¯ããããã¹ãããæå³ããããŸããïŒ
ãã®æçš¿ã®ä»¥åã®ãŠãŒã¶ãŒãšåæ§ã«ããã®ç¬¬1ååæã®Expoã®æåã®æå³ã¯ãã¢ããªãæ§ç¯ããæ¹æ³ãå®è£ ãããã€ãã£ãã®ReactNativeã©ã€ãã©ãªãã€ã³ããŒãã§ããããã«ããããšã§ãã çŸåšãCLIã§æ°ãããããžã§ã¯ããéå§ãããšããŒã¿ã衚瀺ãããŸãã ãããããã«ä¿®æ£ãããããšãé¡ã£ãŠããŸãã
ãããæè¿ãã®åé¡ã«é¢ãã掻åã¯ãªãã£ãããã§ãã åé¡ã¯ä¿®æ£ãããŸãããããããšãã³ãã¥ããã£ã®æ³šæãå¿ èŠã§ããïŒ ãã以äžã®ã¢ã¯ãã£ããã£ãçºçããªãå Žåããã®åé¡ã¯è§£æ±ºãããå¯èœæ§ããããŸãã ãã®åé¡ã«ããã£ã¹ã«ãã·ã§ã³çšããŸãã¯ãè¯ãæåã®åé¡ããšããã©ãã«ãä»ããããšãã§ããŸããéãããŸãŸã«ããŠãããŸãã è²¢ç®ããŠããã ãããããšãããããŸãã
Expo SDKããŒãžã§ã³33.0ããããããå®çŸããæ¹æ³ãèŠã€ããŠãã ããã
ãã®åé¡ã«é¢ããææ°æ å ±ã¯ãããŸããïŒ
https://docs.expo.io/versions/latest/sdk/in-app-purchases/
æŽæ°ïŒç³ãèš³ãããŸãããã以äžãèŠéããŸããïŒ
ãã®ã¢ãžã¥ãŒã«ã¯çŸåšããã¢ã¯ãŒã¯ãããŒã§ã®ã¿äœ¿çšã§ããŸãã
@kkarkos Expoç¬èªã®ã¢ããªå è³Œå ¥ã¢ãžã¥ãŒã«ã䜿çšãããšãïŒåœé¢ã®éïŒExpoã¢ããªãã€ãžã§ã¯ãããå¿ èŠããããããå®éã«ã¯åé¡ã¯è§£æ±ºããŸããã
@EvanBaconã説æããŠããããšã
@TheInternet ãã©ã€ãã©ãªããã©ã«ããèŠã€ãããªããšããåãåé¡ãçºçããŠããŸãã ãããiOSã«æ£ããã€ã³ã¹ããŒã«ããæ¹æ³ãèŠã€ããŸãããïŒ
@inglesuniversal
ç§ã¯èå³æ·±ãã§ããããªãã¯ãããå芧äŒããåãé¢ãããšãªãã¢ããªãåçåããèå³æ·±ãæ¹æ³ãèŠã€ããŸãããïŒ
webViewã§é»å決æžã䜿çšã§ããŸããïŒ ããã¯åæ³ã§ããïŒ
ç§ã®ç¥ãéãããµãŒãããŒãã£ã®ãœãªã¥ãŒã·ã§ã³ãWebã¢ããªïŒã¹ãã©ã€ããPayPalãªã©ïŒãšããŠäœ¿çšã§ããŸãããAppStoreãPlayStoreå ã§ã¯äœ¿çšã§ããŸããã ããããªããšãExpoã®äœ¿çšãéå§ããŠããç§ãã¡ãåŸ ã¡æãã§ããAPIãæ£ããå®è¡ãããŸã§ãã¢ããªãããã¯ã¢ãŠããŸãã¯åé€ãããå¯èœæ§ããããŸãã
å€éšã®ååããµãŒãã¹ãè³Œå ¥ããŠããéãïŒAmazonã§ååãè³Œå ¥ããããUberã¢ããªã§æ¯æãããããããå Žåãªã©ïŒãã¢ããªã§StripeãŸãã¯Paypalã䜿çšã§ããŸãããã¢ããªãœãããŠã§ã¢æ©èœã®ããã¯ã解é€ããããã«Stripeã䜿çšããããšã¯ã§ããŸããïŒã²ãŒã ããŒã¯ã³ãŸãã¯ãã¬ãã¢ã æ©èœã®è²©å£²ïŒ
ã³ã¡ã³ããããããšãKevinColemanInc ...ã¡ã³ããŒã·ããã販売ããã®ããæ ç»ã¬ã³ã¿ã«ãã¯ã©ãŠãã¹ãã¬ãŒãžããªã³ã©ã€ã³ã³ãŒã¹ã®å®ææ¯æããããã®ãç¥ã£ãŠããŸãã...ã¢ããªå ã§StripeãŸãã¯PayPalã䜿çšããŠå€éšããæ¯æãããšãã§ããŸãã->ïŒPlayStoreãŸãã¯AppStoreïŒ ïŒ ãæèŠããããšãããããŸãïŒ
@inglesuniversal
ã¢ããªå ã®æ©èœã®ããã¯ã解é€ããå ŽåïŒäŸïŒãµãã¹ã¯ãªãã·ã§ã³ãã²ãŒã å é貚ãã²ãŒã ã¬ãã«ããã¬ãã¢ã ã³ã³ãã³ããžã®ã¢ã¯ã»ã¹ããŸãã¯ãã«ããŒãžã§ã³ã®ããã¯è§£é€ïŒ
ãããã¯Appleã«ããã¬ã€ãã©ã€ã³ã§ãïŒ
https://developer.apple.com/app-store/review/guidelines/#in -app-purchase
ããªãã説æããããšã®ã»ãšãã©ã¯ããã¬ãã¢ã ã³ã³ãã³ããã«è©²åœãããšæããŸãã Netflixã¯ã¢ããã«çšãæ¯æãå¿ èŠããããŸãã
ã¢ãã€ã«ã§ãµã€ã³ã¢ãããããšãDropboxãAppleã®çšéãæ¯æãããã§ãã Udemyã®ã¢ããªããã§ãã¯ã¢ãŠãããŠãIAPã䜿çšããŠãããã©ããã確èªããŸãã
ãããæè¿ãã®åé¡ã«é¢ãã掻åã¯ãªãã£ãããã§ãã åé¡ã¯ä¿®æ£ãããŸãããããããšãã³ãã¥ããã£ã®æ³šæãå¿ èŠã§ããïŒ ãã以äžã®ã¢ã¯ãã£ããã£ãçºçããªãå Žåããã®åé¡ã¯è§£æ±ºãããå¯èœæ§ããããŸãã ãã®åé¡ã«ããã£ã¹ã«ãã·ã§ã³çšããŸãã¯ãè¯ãæåã®åé¡ããšããã©ãã«ãä»ããããšãã§ããŸããéãããŸãŸã«ããŠãããŸãã è²¢ç®ããŠããã ãããããšãããããŸãã
åã«ïŒ
- æ°ãããã©ã³ããäœæããŸã
detached
exp detach
å®è¡ããŸã- éåžžè¡ãã®ãšåãããšããã¹ãŠè¡ããŸã
master
ã«æ»ã£ãŠãjsã³ãŒããè¿œå ããŸãmaster
ã³ãŒãã£ã³ã°ãããšãã¯ãIAPã¢ãžã¥ãŒã«ã³ãŒãã次ã®ããã«ã©ããããŸããimport { NativeModules } from 'react-native'; const { RNIapModule } = NativeModules; function hasIAP() { return !!NativeModules.RNIapModule; }
- ããã«ãããIAPã¡ãœãããåŒã³åºããšãã«ã³ãŒããã¯ã©ãã·ã¥ããªããªããŸãã
- IAPãå±éãŸãã¯ãã¹ããããšãã¯ãåãé¢ããããã©ã³ãã䜿çšããŸãããŸãã¯ããã©ã³ããå®å šã«ã¹ãããããŠãäžæ£ã«ãªããŸã> :)
ããã§ã®äžè¬çãªèãæ¹ã¯
exp detach
ããããžã§ã¯ããRNã¢ããªãšããŠäœ¿çšã§ããããã«/ios
ïŒ/android
ãã©ã«ããŒã衚瀺ããã ãã§ãã
éåžžã®Expoã¢ããªã®ãã¹ãŠã®æ©èœãåŒãç¶ãå©çšã§ããŸããfastlaneã䜿çšããŠãããã€ããã ããªã®ã§ããã€ãã£ããªãã®ãããŸã䜿çšããå¿ èŠã¯ãããŸããã
æåŸã«ããã©ã³ãã¯SDKããŒãžã§ã³ã®æŽæ°ã«åœ¹ç«ã¡ãŸãã äœããã®çç±ã§æŽæ°ã«åé¡ãããå Žåã¯ãããäžåºŠãã¿ããããŠããã®ã©ã€ãã©ãªãããäžåºŠè¿œå ããããšãã§ããŸãã
å¯éããŠç³ãèš³ãããŸããããããã¯ãIAPã³ãŒããåãã©ã³ãã«åå¥ã«è¿œå ãïŒexpoãã©ã³ãçšã«ãã©ãããããå¿ èŠãããå ŽåïŒãè¿œå ãããã³ã«æ°ãããã©ã³ãã§åã€ãžã§ã¯ãããããšãæå³ããŸããïŒãã¹ã¿ãŒãžã®ãšãã¹ãã³ãŒãããŸãã¯ãã€ã§ããã©ã³ããããŒãžããŠããŸãã??ïŒ ãããŠãããã¯ãŸã IAPããããŒãžããšãã¹ãã¢ããªã«è¿œå ããããã®æè¯ã®æ¹æ³ã§ããïŒ ç§ã¯æåã®å€§ããªã¢ããªãå®æãããã°ããã§ããã®æ©èœãäœããã®æ¹æ³ã§è¿œå ããå¿ èŠããããŸãããã©ã³ãã§ãããè¡ãããšã¯ãããããå®å šãªãªãã·ã§ã³ã®ããã§ã-ã¯ãŒã¯ãããŒãç解ããŠããããšã確èªãããã ãã§ãïŒ ç§ãå芧äŒã倧奜ãã ãšèšããªããã°ãªããŸããïŒ ããã¯ãã€ãã£ãã«åå¿ããããã®çŽ æŽãããæ¹æ³ã§ããããããŠãããªãã§ã¯ç§ã¯ãããŸã§ãããŸã§ã«å°éããããšã¯ãªãã£ãã§ããããããããšãããããŠè¯ãä»äºãç¶ããŠãã ãã!!!
ãããæè¿ãã®åé¡ã«é¢ãã掻åã¯ãªãã£ãããã§ãã åé¡ã¯ä¿®æ£ãããŸãããããããšãã³ãã¥ããã£ã®æ³šæãå¿ èŠã§ããïŒ ãã以äžã®ã¢ã¯ãã£ããã£ãçºçããªãå Žåããã®åé¡ã¯è§£æ±ºãããå¯èœæ§ããããŸãã ãã®åé¡ã«ããã£ã¹ã«ãã·ã§ã³çšããŸãã¯ãè¯ãæåã®åé¡ããšããã©ãã«ãä»ããããšãã§ããŸããéãããŸãŸã«ããŠãããŸãã è²¢ç®ããŠããã ãããããšãããããŸãã
é·æé䜿çšãããªãã£ãåŸããã®åé¡ã解決ããŸãã ãã®åé¡ãææ°ãªãªãŒã¹ã§ãåŒãç¶ãçºçããå Žåã¯ãææ°ã®æ å ±ã䜿çšããŠæ°ããåé¡ãäœæããŠãã ããã
åã«ïŒ
- æ°ãããã©ã³ããäœæããŸã
detached
exp detach
å®è¡ããŸã- éåžžè¡ãã®ãšåãããšããã¹ãŠè¡ããŸã
master
ã«æ»ã£ãŠãjsã³ãŒããè¿œå ããŸãmaster
ã³ãŒãã£ã³ã°ãããšãã¯ãIAPã¢ãžã¥ãŒã«ã³ãŒãã次ã®ããã«ã©ããããŸããimport { NativeModules } from 'react-native'; const { RNIapModule } = NativeModules; function hasIAP() { return !!NativeModules.RNIapModule; }
- ããã«ãããIAPã¡ãœãããåŒã³åºããšãã«ã³ãŒããã¯ã©ãã·ã¥ããªããªããŸãã
- IAPãå±éãŸãã¯ãã¹ããããšãã¯ãåãé¢ããããã©ã³ãã䜿çšããŸãããŸãã¯ããã©ã³ããå®å šã«ã¹ãããããŠãäžæ£ã«ãªããŸã> :)
ããã§ã®äžè¬çãªèãæ¹ã¯
exp detach
ããããžã§ã¯ããRNã¢ããªãšããŠäœ¿çšã§ããããã«/ios
ïŒ/android
ãã©ã«ããŒã衚瀺ããã ãã§ãã
éåžžã®Expoã¢ããªã®ãã¹ãŠã®æ©èœãåŒãç¶ãå©çšã§ããŸããfastlaneã䜿çšããŠãããã€ããã ããªã®ã§ããã€ãã£ããªãã®ãããŸã䜿çšããå¿ èŠã¯ãããŸããã
æåŸã«ããã©ã³ãã¯SDKããŒãžã§ã³ã®æŽæ°ã«åœ¹ç«ã¡ãŸãã äœããã®çç±ã§æŽæ°ã«åé¡ãããå Žåã¯ãããäžåºŠãã¿ããããŠããã®ã©ã€ãã©ãªãããäžåºŠè¿œå ããããšãã§ããŸããå¯éããŠç³ãèš³ãããŸããããããã¯ãIAPã³ãŒããåãã©ã³ãã«åå¥ã«è¿œå ãïŒexpoãã©ã³ãçšã«ãã©ãããããå¿ èŠãããå ŽåïŒãè¿œå ãããã³ã«æ°ãããã©ã³ãã§åã€ãžã§ã¯ãããããšãæå³ããŸããïŒãã¹ã¿ãŒãžã®ãšãã¹ãã³ãŒãããŸãã¯ãã€ã§ããã©ã³ããããŒãžããŠããŸãã??ïŒ ãããŠãããã¯ãŸã IAPããããŒãžããšãã¹ãã¢ããªã«è¿œå ããããã®æè¯ã®æ¹æ³ã§ããïŒ ç§ã¯æåã®å€§ããªã¢ããªãå®æãããã°ããã§ããã®æ©èœãäœããã®æ¹æ³ã§è¿œå ããå¿ èŠããããŸãããã©ã³ãã§ãããè¡ãããšã¯ãããããå®å šãªãªãã·ã§ã³ã®ããã§ã-ã¯ãŒã¯ãããŒãç解ããŠããããšã確èªãããã ãã§ãïŒ ç§ãå芧äŒã倧奜ãã ãšèšããªããã°ãªããŸããïŒ ããã¯ãã€ãã£ãã«åå¿ããããã®çŽ æŽãããæ¹æ³ã§ããããããŠãããªãã§ã¯ç§ã¯ãããŸã§ãããŸã§ã«å°éããããšã¯ãªãã£ãã§ããããããããšãããããŠè¯ãä»äºãç¶ããŠãã ãã!!!
ããã«ã¡ã¯ïŒ çãã¯èŠã€ãããŸãããïŒ ã©ã®ããã«å®è£ ããŸãããïŒ
æãåèã«ãªãã³ã¡ã³ã
åã«ïŒ
detached
exp detach
å®è¡ããŸãmaster
ã«æ»ã£ãŠãjsã³ãŒããè¿œå ããŸãmaster
ã³ãŒãã£ã³ã°ãããšãã¯ãIAPã¢ãžã¥ãŒã«ã³ãŒãã次ã®ããã«ã©ããããŸããããã§ã®äžè¬çãªèãæ¹ã¯
exp detach
ããããžã§ã¯ããRNã¢ããªãšããŠäœ¿çšã§ããããã«/ios
ïŒ/android
ãã©ã«ããŒã衚瀺ããã ãã§ããéåžžã®Expoã¢ããªã®ãã¹ãŠã®æ©èœãåŒãç¶ãå©çšã§ããŸããfastlaneã䜿çšããŠãããã€ããã ããªã®ã§ããã€ãã£ããªãã®ãããŸã䜿çšããå¿ èŠã¯ãããŸããã
æåŸã«ããã©ã³ãã¯SDKããŒãžã§ã³ã®æŽæ°ã«åœ¹ç«ã¡ãŸãã äœããã®çç±ã§æŽæ°ã«åé¡ãããå Žåã¯ãããäžåºŠãã¿ããããŠããã®ã©ã€ãã©ãªãããäžåºŠè¿œå ããããšãã§ããŸãã