Cocos2d-x (C++) 專案接入 Apple 正式環境內購 (IAP) 與 Game Center/登入,需完成Apple 開發者後台配置、Xcode 專案權限設定、C++/Objective-C++ 橋接層實作三大階段。
com.game.coins100)、價格、截圖、審核資訊。NSAppStoreReceiptValidationURL (可選,自有伺服器驗證用)。建立 IAPManager.mm (Objective-C++):
#import
#import
class IAPManager : public SKProductsRequestDelegate, SKPaymentTransactionObserver {
public:
static IAPManager* getInstance();
void requestProducts(const std::vector& productIds);
void purchase(const std::string& productId);
void restorePurchases();
// 回呼介面
std::function onPurchaseResult;
private:
SKProductsRequest* _request;
// 實作 SKProductsRequestDelegate, SKPaymentTransactionObserver 方法
// productsRequest:didReceiveResponse -> 解析 SKProduct 價格/描述回傳 C++ 層
// paymentQueue:updatedTransactions -> 處理購買/恢復/失敗狀態,驗證憑證 (本地/伺服器)
};
C++ 層呼叫:
IAPManager::getInstance()->requestProducts({"com.game.coins100", "com.game.gems50"});
IAPManager::getInstance()->onPurchaseResult = [](bool ok, const std::string& msg) {
// UI 顯示結果
};
[[SKPaymentQueue defaultQueue] finishTransaction:transaction] 必須在驗證成功後調用,否則交易卡在隊列導致重複提示。[GKLocalPlayer localPlayer] authenticateWithCompletionHandler:...,成功後取得 playerID、alias 供遊戲邏輯使用。cpp-tests/Classes/IAPTest.cpp完整走一遍「後台配置 → Xcode 權限 → 橋接層 → 伺服器驗證」流程,即可穩健上線內購功能。