시청 검증 콜백이 없는 테스트 광고 단위에서 광고 추가 기여 POP 지급
This commit is contained in:
@@ -491,9 +491,21 @@ export const fnAdReward = onCall(async (req) => {
|
||||
// 시청 증거 — Google 이 서버로 보낸 SSV 콜백(서명 검증 통과분)만 인정한다.
|
||||
const ssv = await db.collection('adSsv')
|
||||
.where('uid', '==', uid).where('baseTxId', '==', baseTxId).limit(1).get();
|
||||
if (ssv.empty) fail(ERR.adNotVerified, '광고 시청이 아직 확인되지 않았습니다.');
|
||||
const impressionId = ssv.docs[0]!.id;
|
||||
const network = (ssv.docs[0]!.get('adNetwork') as string | undefined) || 'admob';
|
||||
let impressionId: string;
|
||||
let network: string;
|
||||
if (!ssv.empty) {
|
||||
impressionId = ssv.docs[0]!.id;
|
||||
network = (ssv.docs[0]!.get('adNetwork') as string | undefined) || 'admob';
|
||||
} else if (process.env.AD_REWARD_TEST_UNIT === 'true') {
|
||||
// Google 공개 **테스트 광고 단위**에는 우리 SSV URL 을 걸 수 없어 콜백이 오지 않는다(r11 3-6 —
|
||||
// fn-ad-ssv 호출 0건). 앱은 끝까지 본 광고(onUserEarnedReward)에만 이 함수를 부르므로, 테스트 단위를
|
||||
// 쓰는 서버에서만 그 호출을 시청 완료로 받는다. 서버 .env(개발 서버만)로 켜며 앱이 바꿀 수 없다.
|
||||
// ponytail: 발주사 AdMob 실 광고 단위 + SSV URL 등록 뒤 이 값을 끄면 SSV 만 인정한다.
|
||||
impressionId = `test-${baseTxId}`;
|
||||
network = 'admob-test';
|
||||
} else {
|
||||
fail(ERR.adNotVerified, '광고 시청이 아직 확인되지 않았습니다.');
|
||||
}
|
||||
const logRef = db.doc(`adRewardLogs/${impressionId}`);
|
||||
|
||||
const quest = (await db.doc(`quests/${questId}`).get()).data() ?? {};
|
||||
|
||||
Reference in New Issue
Block a user