App Store 促銷
App Store 促銷是指在 App Store 上瀏覽 App 內(nèi)購(gòu)買項(xiàng)目,甚至在下載 App 之前就能開(kāi)始購(gòu)買這些項(xiàng)目.
App Store 促銷開(kāi)發(fā)
在項(xiàng)目中支持內(nèi)購(gòu)的基礎(chǔ)上,增加 App Store 促銷功能配置,一般情況下會(huì)提示你,無(wú)法在 App Store 上推廣.
該提示項(xiàng)目中并沒(méi)有去實(shí)現(xiàn) paymentQueue:shouldAddStorePayment:forProduct:
這個(gè)代理方法,導(dǎo)致無(wú)法直接使用 App Store 促銷功能,所以需要開(kāi)發(fā)者在項(xiàng)目中去實(shí)現(xiàn)這個(gè)代理方法.
這個(gè)方法會(huì)返回商品信息,返回值 YES 則交給蘋果處理該訂單,直接調(diào)起支付流程,如果返回 NO 的話,則不會(huì)調(diào)起支付流程,在里面我們可以增加自己的一些邏輯代碼,比如判斷當(dāng)前用戶是否已經(jīng)登錄了等等操作
/// AppStore 從促銷點(diǎn)擊購(gòu)買處理
- (BOOL)paymentQueue:(SKPaymentQueue *)queue shouldAddStorePayment:(SKPayment *)payment forProduct:(SKProduct *)product {
// 直接返回 NO,不交給蘋果處理
NSString *productID = product.productIdentifier;
NSLog(@"AppStore 促銷點(diǎn)擊購(gòu)買: productIdentifier - %@", productID);
// 記錄當(dāng)前事件
[APPDELEGATE.appReqTools dealAppStoreBuyWithProductID:productID];
// 判斷當(dāng)前是否登錄
BOOL result = [LBLoginHandler checkLogin];
if (result == YES) {
// 當(dāng)前已登錄直接處理
NSLog(@"當(dāng)前已登錄,直接處理當(dāng)前事件");
[APPDELEGATE.appReqTools dealAllEvent];;
} else {
// 當(dāng)前未登錄
NSLog(@"當(dāng)前未登錄,待登錄成功后,處理跳轉(zhuǎn)購(gòu)買會(huì)員頁(yè)面");
}
return NO;
}
這樣就完成了 AppStore 內(nèi)購(gòu)促銷開(kāi)發(fā)
測(cè)試
該代碼未上線,所以不能直接在 AppStore 進(jìn)行測(cè)試,只有當(dāng)該代碼上線之后,才能在 App Store Connect 去設(shè)置 AppStore 促銷功能,但是我們需要在開(kāi)發(fā)過(guò)程中去測(cè)試該功能,可以使用以下方法
測(cè)試推廣的 App 內(nèi)購(gòu)項(xiàng)目
生成的 URL 類似如下:
itms-services://?action=purchaseIntent&bundleId=com.example.app&productIdentifier=product_name