소곤소곤 ad

2014년 6월 22일 일요일

갤럭시 s4 s5 개발자옵션 설정하기

갤럭시S4의 개발자모드는 숨겨져 있다. 



디바이스 정보에서 "빌드 번호" 항목을 연속해서 7회에서 9회 정도를 연속으로 누르면 "개발자 모드가 실행 되었습니다" 라는 문구가 나오면서 활성화 된다. 상위로 가서 개발자 옵션이 활성화 되었는지 확인해 보자.







2014년 6월 17일 화요일

구글플레이 안드로이드 인앱결제 보안 이야기 #3 (public Key)

페이스북-스마트폰게임개발자그룹 에서 도움을 얻어 업데이트. 하나용님에게 감사드립니다.


서버검증할거라면 클라이언트(앱)에서 publicKey는 필요가 없다. 

위험

구글의 샘플코드에서 publicKey를 사용하는 부분들을 사용하지 않도록 수정해야 하는데, 코드상에는 두 군데가 있다. 

int queryPurchases(Inventory inv, String itemType) throws JSONException, RemoteException 
{
    ....

    if (Security.verifyPurchase(mSignatureBase64, purchaseData, signature)) {
         logDebug("Sku is owned: " + sku);
         Purchase purchase = new Purchase(itemType, purchaseData, signature);

         // Record ownership and token
         inv.addPurchase(purchase);
    }
    else {
         logWarn("Purchase signature verification **FAILED**. Not adding item.");
         logDebug("   Purchase data: " + purchaseData);
         logDebug("   Signature: " + signature);
         verificationFailed = true;
    }
    ....

아래 검증하는 부분도 단순하게 skip 한다. 
public boolean handleActivityResult(int requestCode, int resultCode, Intent data) {
    ...

    Purchase purchase = null;
    try {
         purchase = new Purchase(mPurchasingItemType, purchaseData, dataSignature);
         String sku = purchase.getSku();

         // Verify signature
                
         // bisuit_jump
         /*
         if (!Security.verifyPurchase(mSignatureBase64, purchaseData, dataSignature)) {
             logError("Purchase signature verification FAILED for sku " + sku);
             result = new IabResult(IABHELPER_VERIFICATION_FAILED, "Signature verification failed for sku " + sku);
             if (mPurchaseListener != null) mPurchaseListener.onIabPurchaseFinished(result, purchase);
             return true;
         }
         */
         logDebug("Purchase signature successfully verified.");
    ...

이렇게 하면, publicKey를 클라이언트에 두지 않으면서 영수증을 서버로 보내 전적으로 서버에 검증을 맡길 수 있다.