heartright-co / expo-bare-test-module_payment

0 stars 0 forks source link

In app purchase 모듈 작업 #3

Closed byyoungjin closed 3 years ago

byyoungjin commented 3 years ago
byyoungjin commented 3 years ago

https://docs.expo.io/versions/latest/sdk/in-app-purchases/#add-the-package-to-your-dependencies

byyoungjin commented 3 years ago

in app purchase

https://github.com/dooboolab/react-native-iap <-- 한국에서 만든 rn library 네 신기.. ios_youtube android_youtube

byyoungjin commented 3 years ago

RN ios build

https://dev-yakuza.posstree.com/ko/react-native/ios-running-on-device/ https://medium.com/dev-genius/run-react-native-app-on-ios-device-6e8c67afb44b

https://medium.com/@klpdjolanta/how-to-deploy-ios-app-to-apple-store-using-xcode-c8c613ec13ee

  1. archive 는 됐는데, organizer 가 뜨지않아서 찾아봄 https://stackoverflow.com/questions/7377162/xcode-but-where-are-our-archives

  2. App store connect operation error 가 떠서 보니 apple connect 쪽에도 config 를 해줘야 한다. https://es1015.tistory.com/377

  3. app icon 넣어주라는 error https://medium.com/@ansonmathew/app-icon-in-react-native-ios-and-android-6165757e3fdb 하나만넣었더니 안되서 아래와 같이 다넣음. https://appicon.co/ <- 유용한 appIcon generator image

  4. 성공 (일단 내 개인 계정에 올림) image

ios App distribution Best Practice <- xcode, apple connect 등 제대로 설명

byyoungjin commented 3 years ago
byyoungjin commented 3 years ago

ios, android Inapp purchase setting 법 https://betterprogramming.pub/react-native-in-app-purchase-subscription-bb7ad18ec5a0

byyoungjin commented 3 years ago

App store server notification 에 내 서버를 등록해두면, in app purchase 관련한 사항에 대해 실시간으로 응답을 받을 수있는듯. (refund 등에 대해) https://developer.apple.com/documentation/appstoreservernotifications

byyoungjin commented 3 years ago

sandbox account 에 대하여 https://www.revenuecat.com/blog/testing-in-app-purchases-ruins-your-phone

https://developer.apple.com/documentation/storekit/in-app_purchase/testing_in-app_purchases_with_sandbox

in app purchase https://www.raywenderlich.com/5456-in-app-purchase-tutorial-getting-started

tax form 입력(US) https://m.blog.naver.com/PostView.nhn?blogId=oakwoodpa&logNo=70094305582&proxyReferer=https:%2F%2Fwww.google.co.kr%2F

byyoungjin commented 3 years ago

공유하기

  1. apple connect 에 young@heartright.co admin 권한 부여
  2. US tax 입력, submit US tax setup, 일단 submit 했는데, 수정사항 있을듯함 https://appstoreconnect.apple.com/agreements/#/?section=taxForm&countryCode=USA&id=2e36d1bb-00bc-41ef-8d95-8407bdd2d889 아래 링크 통해 수정요청 가능 https://developer.apple.com/contact/finance/
byyoungjin commented 3 years ago
byyoungjin commented 3 years ago

android RN build and submit

upload key 생성 및 업로드 https://reactnative.dev/docs/signed-apk-android

JDK 는 javascript development kit android 는 자바로 만드니까, upload key 를 만드는데 jdk 를 이용하는거 같다.

goole play store 의 upload key, sign key 두가지 개념

key store: pnuu-bareflow-upload-key.kestore key alias: pnuu-bareflow-alias key store password: pnuubareflow key password : pnuubareflow 이름 ,성 : youngjinHa 조직단위 : pnuu

byyoungjin commented 3 years ago

issue : background location permission 문제

background location 을 사용하지 않는데, 요청한다고 사유를 대라고한다. 아마 expo default 이거나, 내가 사용하는 library 중에서 background location 요청하는것이 있는것 같다. https://stackoverflow.com/questions/64541850/expo-delete-permission-location

bare workflow 에는 default 로 설정된 permission 들이있는데, https://docs.expo.io/versions/latest/sdk/permissions/#excluding-android-permissions-in-bare-workflow

그중엔 fine, coarse, background location 도 포함된다. android sdk 29 이전에는 fine, coarse 에 background location 도 포함되므로, 아래와 같은 방법으로 AndroidManifest.xml 파일에서 위 3가지 를 지워야 내 앱에서 background location 을 사용하지 않는것이 된다. https://github.com/expo/expo/issues/11918

byyoungjin commented 3 years ago

android versioning version 코드는 그냥 integer 로 1씩 올린다. 어떤 version 이 먼저인지 알기위한 값. version name 이 사용자에게 표시되고, minor major 개념적용 https://developer.android.com/studio/publish/versioning

byyoungjin commented 3 years ago

google play console 에 subscription 설정후

android device 로 테스트 https://reactnative.dev/docs/running-on-device

android 의 경우에 대부분의 케이블은 충전만되고, 데이터 전송은 되지않는다. 데이터 전송을 위해 예전에 폰샀을때 받은 모듈을 중간에 끼워보니 데이터가 전송된다.

근데 android file transfer 또는 Samsung Smart Switch 가 필요하다는 경고가 뜨는데, 무시하면되고

계속진행햇더니 아래와 같은 에러가 떳다. 이유는 아마 이 로컬 테스트 이전에, 내부테스트 올린것을 다운로드 받아서 폰에 있었는데, 이 앱과 번들아이디가 같은데, signing 이 다르다는 의미인것같다. 내부테스트 앱의 signing 은 google 에서 auto 로 제공한 것이고, 지금 local 앱의 signing 은 내가 upload 키로 만든(?) 것 이기때문에 다른것 같다. (확실하진 않다. 아무튼,, signing 이 다르다. upload key 와 signing key 에 대한 이해가 좀더 필요하다. )

* What went wrong:
Execution failed for task ':app:installDebug'.
> com.android.builder.testing.api.DeviceException: com.android.ddmlib.InstallException: INSTALL_FAILED_UPDATE_INCOMPATIBLE: Package com.pnuubareworkflow signatures do not match previously installed version; ignoring!
byyoungjin commented 3 years ago

일단 android 구독설정, link 되어서 구독정보 설정 가져오는 것 까지 완료

byyoungjin commented 3 years ago

안드로이드 ios 모두 구독정보를 가지고오는 단계에서 credential 한 정보는 없고, 그냥 productId 와 결제 정보등의 단순 정보만 들어있다. 구독 요청, 환불 등의 로직은 이 Id 와 함께 expo sdk 에 넘기면, 내부적으로 구글 play, apple connect 서버에 요청, 결제가 진행이 되는 것 같다.

byyoungjin commented 3 years ago

android 구독 flow 만들어 보기

ios susbscription 구현 guide

--> apple, google 에서 제공하는 rest api 이용하면 구독취소, 환불등의 기능도 앱내에서 구현할 수있다.

byyoungjin commented 3 years ago

expo bareworkflow in app purchase example https://github.com/expo/expo/blob/cd44dd43bde87bbdcf53fe6fe62779e037a5f183/apps/native-component-list/src/screens/InAppPurchases/InAppPurchases.tsx

byyoungjin commented 3 years ago

issue: 로컬상황에서 products 리스트는 받아오는데 결제를 하려고하면 이기능을 사용할 수없다는 메세지가 뜸.

android inapp purchase local 에서 테스트하는법? https://stackoverflow.com/questions/42942046/how-to-test-google-play-in-app-purchase

  1. manifetst 에 billing permission 추가? https://www.techotopia.com/index.php/An_Android_Studio_Google_Play_In-app_Billing_Tutorial -> 효과없음
  2. purchase 기능 넣은 버전 다시 release : tester 로 앱실행하니까 -> 로컬에 실행되고있던 앱으로 들어가고 -> purchase 기능이 작동한다. 2-1 아마 로컬이랑 publish된 앱 configuration 에 차이가 있었을 수도 있고 2-2 purchase 기능이 publish 됐는지도 google 서버에서 파악하고 publish 된 기능만 로컬에서 제공한다..? 일수도 있을듯.
byyoungjin commented 3 years ago

android in app purchase test docs https://developer.android.com/google/play/billing/test#subs

testing on android medium post https://medium.com/bleeding-edge/testing-in-app-purchases-on-android-a6de74f78878

licensed testers https://support.google.com/googleplay/android-developer/answer/6062777

byyoungjin commented 3 years ago
  1. google play developr api 연결 https://developer.android.com/google/play/developer-api?hl=ko android subscription 전반적인 설명 + api 사용 설정 <-- revenuCat 이라는 subscription 서비스 제공, 나중에 사용고려해봐도 괜찮을듯 1-1 service계정만들기 service 계정이나 Oauth 로 설정할 수있는데, service 게정을 만들면 결국 api 키를 보관할 별도의 서버가필요할듯
byyoungjin commented 3 years ago

issue : service 계정을 만들어도 project 에 뜨지 않음

https://stackoverflow.com/questions/50208046/service-account-doesnt-show-up-in-google-play-console-after-creation

  1. service account 를 생성할때는 2가지 롤설정이 필요한데 1-1 service account 의 권한 1-2 service account 를 사용할 수있는 account 및 권한

1-1 부분을 확실히 해줘야 google play console 에 나타난다. 2개 service account 를 생성했고, 각각 소유자, 뷰어 로 설정해봤다. 뭐가다른지 테스트 위해

byyoungjin commented 3 years ago

subscription 구현에 revenuCat 사용에 대해서

ios subscription is hard

is revenucat worth it