mirror of
https://github.com/hrydgard/ppsspp.git
synced 2026-07-11 01:25:07 +02:00
Add USE_IAP option to b-appstore.sh
This commit is contained in:
+17
-1
@@ -134,10 +134,24 @@ endif()
|
||||
if(GOLD)
|
||||
add_compile_definitions(GOLD)
|
||||
message("Gold Build")
|
||||
if(IOS_APP_STORE)
|
||||
message("WARNING: Gold build for iOS is deprecated")
|
||||
endif()
|
||||
else()
|
||||
message("Non-gold Build")
|
||||
endif()
|
||||
|
||||
if(USE_IAP)
|
||||
if(GOLD)
|
||||
message(FATAL_ERROR "USE_IAP and GOLD can't be enabled together")
|
||||
endif()
|
||||
if(NOT IOS_APP_STORE)
|
||||
message(FATAL_ERROR "USE_IAP can only be enabled in app store builds")
|
||||
endif()
|
||||
message("USE_IAP for iOS enabled")
|
||||
add_compile_definitions(USE_IAP)
|
||||
endif()
|
||||
|
||||
if(IOS_APP_STORE)
|
||||
add_compile_definitions(PPSSPP_PLATFORM_IOS_APP_STORE)
|
||||
add_compile_definitions(GLES_SILENCE_DEPRECATION)
|
||||
@@ -191,6 +205,8 @@ option(USE_ASAN "Use address sanitizer" OFF)
|
||||
option(USE_UBSAN "Use undefined behaviour sanitizer" OFF)
|
||||
option(USE_CCACHE "Use ccache if detected" ON)
|
||||
option(USE_NO_MMAP "Disable mmap usage" OFF)
|
||||
option(USE_IAP "IAP enabled" OFF)
|
||||
option(GOLD "Gold build" OFF)
|
||||
|
||||
if(USE_CCACHE)
|
||||
include(ccache)
|
||||
@@ -2970,7 +2986,7 @@ if(IOS AND NOT LIBRETRO)
|
||||
set(DISPLAY_NAME "PPSSPP")
|
||||
endif()
|
||||
if(IOS_APP_STORE)
|
||||
message(STATUS "DevTeam: ${DEVELOPMENT_TEAM_ID} Icon: ${ICON_NAME} Target: ${TargetBin}")
|
||||
message(STATUS "DevTeam: ${DEVELOPMENT_TEAM_ID} Icon: ${ICON_NAME} Target: ${TargetBin} Gold: ${GOLD} IAP: ${USE_IAP}")
|
||||
message(STATUS "CURRENT_BINARY_DIR: ${CMAKE_CURRENT_BINARY_DIR}")
|
||||
|
||||
# This is for injecting the version into the plist, and also copying resources.
|
||||
|
||||
+17
-2
@@ -14,6 +14,11 @@ if [[ -z "${GOLD}" ]]; then
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ -z "${USE_IAP}" ]]; then
|
||||
echo "USE_IAP is not set (should be YES or NO), exiting"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
FOLDER_NAME="build-ios"
|
||||
|
||||
if [[ "$GOLD" = "YES" ]]; then
|
||||
@@ -23,6 +28,16 @@ else
|
||||
echo "Non-GOLD build."
|
||||
fi
|
||||
|
||||
if [[ "$USE_IAP" = "YES" ]]; then
|
||||
if [[ "$GOLD" = "YES" ]]; then
|
||||
echo "IAP and GOLD are both set to YES, which is invalid"
|
||||
exit 1
|
||||
fi
|
||||
echo "IAP on."
|
||||
else
|
||||
echo "IAP off."
|
||||
fi
|
||||
|
||||
echo "Clearing and re-creating output directory"
|
||||
rm -rf $FOLDER_NAME
|
||||
mkdir $FOLDER_NAME
|
||||
@@ -31,7 +46,7 @@ pushd $FOLDER_NAME
|
||||
|
||||
BUILD_TYPE=Release
|
||||
|
||||
cmake .. -DIOS_APP_STORE=ON -DGOLD=$GOLD -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DCMAKE_TOOLCHAIN_FILE=cmake/Toolchains/ios.cmake -DDEVELOPMENT_TEAM_ID=${DEVTEAM} -DIOS_PLATFORM=OS -GXcode
|
||||
cmake .. -DIOS_APP_STORE=ON -DGOLD=$GOLD -DUSE_IAP=$USE_IAP -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DCMAKE_TOOLCHAIN_FILE=cmake/Toolchains/ios.cmake -DDEVELOPMENT_TEAM_ID=${DEVTEAM} -DIOS_PLATFORM=OS -GXcode
|
||||
# TODO: Get a MoltenVK somewhere.
|
||||
#cp ../MoltenVK/iOS/Frameworks/libMoltenVK.dylib PPSSPP.app/Frameworks
|
||||
popd
|
||||
@@ -45,4 +60,4 @@ echo "*** Done. Now run the following command to open in XCode, then run or arch
|
||||
echo " open $FOLDER_NAME/PPSSPP.xcodeproj"
|
||||
|
||||
# To open the xcode project:
|
||||
# open build-ios/PPSSPP.xcodeproj
|
||||
# open build-ios/PPSSPP.xcodeproj
|
||||
|
||||
+24
-4
@@ -6,11 +6,11 @@
|
||||
|
||||
#include "../ppsspp_config.h"
|
||||
|
||||
#if PPSSPP_PLATFORM(IOS_APP_STORE)
|
||||
|
||||
// Only one operation can be in progress at once.
|
||||
@implementation IAPManager {
|
||||
#ifdef USE_IAP
|
||||
SKProduct *_goldProduct;
|
||||
#endif
|
||||
int _pendingRequestID;
|
||||
}
|
||||
|
||||
@@ -24,21 +24,30 @@
|
||||
}
|
||||
|
||||
- (instancetype)init {
|
||||
#ifdef USE_IAP
|
||||
if (self = [super init]) {
|
||||
[[SKPaymentQueue defaultQueue] addTransactionObserver:self];
|
||||
}
|
||||
#endif
|
||||
return self;
|
||||
}
|
||||
|
||||
- (void)startObserving {
|
||||
#ifdef USE_IAP
|
||||
[[SKPaymentQueue defaultQueue] addTransactionObserver:self];
|
||||
#endif
|
||||
}
|
||||
|
||||
- (BOOL)isGoldUnlocked {
|
||||
#ifdef USE_IAP
|
||||
return [[NSUserDefaults standardUserDefaults] boolForKey:@"isGold"];
|
||||
#else
|
||||
return false;
|
||||
#endif
|
||||
}
|
||||
|
||||
- (void)buyGoldWithRequestID:(int)requestID {
|
||||
#ifdef USE_IAP
|
||||
if (_pendingRequestID) {
|
||||
ERROR_LOG(Log::IAP, "A transaction is pending. Failing the new request.");
|
||||
g_requestManager.PostSystemFailure(requestID);
|
||||
@@ -55,9 +64,13 @@
|
||||
NSLog(@"[IAPManager] In-App Purchases are disabled (requestID: %d)", requestID);
|
||||
g_requestManager.PostSystemFailure(requestID);
|
||||
}
|
||||
#else
|
||||
g_requestManager.PostSystemFailure(requestID);
|
||||
#endif
|
||||
}
|
||||
|
||||
- (void)restorePurchasesWithRequestID:(int)requestID {
|
||||
#ifdef USE_IAP
|
||||
if (_pendingRequestID) {
|
||||
ERROR_LOG(Log::IAP, "A transaction is pending. Failing the new request.");
|
||||
g_requestManager.PostSystemFailure(requestID);
|
||||
@@ -68,8 +81,13 @@
|
||||
// NOTE: This is deprecated, but StoreKit 2 is swift only. We'll keep using it until
|
||||
// there's a replacement.
|
||||
[[SKPaymentQueue defaultQueue] restoreCompletedTransactions];
|
||||
#else
|
||||
g_requestManager.PostSystemFailure(requestID);
|
||||
#endif
|
||||
}
|
||||
|
||||
#ifdef USE_IAP
|
||||
|
||||
- (void)paymentQueueRestoreCompletedTransactionsFinished:(SKPaymentQueue *)queue {
|
||||
NSLog(@"Restore completed successfully (requestID: %d)", _pendingRequestID);
|
||||
g_requestManager.PostSystemSuccess(_pendingRequestID, "", 0);
|
||||
@@ -122,7 +140,10 @@
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
- (void)unlockGold {
|
||||
#ifdef USE_IAP
|
||||
INFO_LOG(Log::UI, "Unlocking gold reward!");
|
||||
|
||||
// Write to user defaults to store the status.
|
||||
@@ -134,6 +155,7 @@
|
||||
});
|
||||
|
||||
NSLog(@"[IAPManager] Gold unlocked!");
|
||||
#endif
|
||||
}
|
||||
|
||||
static bool SafeStringEqual(NSString *a, NSString *b) {
|
||||
@@ -185,6 +207,4 @@ static bool SafeStringEqual(NSString *a, NSString *b) {
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
@end
|
||||
|
||||
+2
-2
@@ -373,17 +373,17 @@ bool System_GetPropertyBool(SystemProperty prop) {
|
||||
// If a hardware keyboard is connected, and we add support, we could return false here.
|
||||
return true;
|
||||
case SYSPROP_APP_GOLD:
|
||||
// TODO: Check the IAP status.
|
||||
#ifdef GOLD
|
||||
// This is deprecated.
|
||||
return true;
|
||||
#elif PPSSPP_PLATFORM(IOS_APP_STORE)
|
||||
// Check the IAP status.
|
||||
return [[IAPManager sharedIAPManager] isGoldUnlocked];
|
||||
#else
|
||||
return false;
|
||||
#endif
|
||||
case SYSPROP_USE_IAP:
|
||||
#if PPSSPP_PLATFORM(IOS_APP_STORE) && !defined(GOLD)
|
||||
#if PPSSPP_PLATFORM(IOS_APP_STORE) && defined(USE_IAP)
|
||||
return true;
|
||||
#else
|
||||
return false;
|
||||
|
||||
Reference in New Issue
Block a user