A jailed in-app purchase cracker for iOS 12.2-15.6

Overview

Satella Jailed

For, um, educational purposes only or something. Definitely don't use this to pirate in-app purchases in apps to which you don't have legal rights to do security testing šŸ™ƒ

A modern in-app purchase cracker built for sideloaded applications, especially on unjailbroken devices. If you want to crack in-app purchases on jailbroken devices, including for sideloaded apps, try Satella 2

Script Method

  1. Obtain a decrypted .ipa of your target app
  2. Clone this repo to your PC
  3. Run the patch.sh script. Optional arguments are:
    • -v for version, i.e., 15
    • -i for input, i.e., App.ipa
    • -o for output, i.e., App_Satella
  4. Sideload the patched .ipa

Manual Method

  1. Obtain a decrypted .ipa of your target app
  2. Clone this repo to your PC
  3. Extract the Orion zip for your iOS version
  4. Move Emilia directory to Orion.framework
  5. Inject Satella.dylib and Orion.framework into the target .ipa
  6. Ensure that Orion.framework and CydiaSubstrate.framework are located in @executable_path/Frameworks
  7. Sideload the patched .ipa

E-Sign Method

  1. Obtain a decrypted .ipa of your target app
  2. Download the .zip of this repo and open in E-Sign
  3. Unzip your desired Orion_*.zip and CydiaSubstrate.zip
  4. Move Emilia directory to Orion.framework
  5. In Signature -> More Settings, import Orion.framework, Satella.dylib, and CydiaSubstrate.framework
  6. In Signature -> More Settings, make sure it uses @executable_path and Frameworks
  7. Sign and install the patched .ipa

AppDB Method

  1. Link your device to AppDB
  2. Enable the in-app purchase patch
  3. Install an app that has in-app purchases

Now you can make fake purchases without a jailbreak! Just attempt to purchase something and cancel on the popup.

You can also access Satella Jailedā€™s preferences by long-pressing with two fingers inside an app if you are on iOS 13 or higher.

The configurable options are:

  • Emilia chibi: SwiftUI is fun
  • Little x in the corner: Close the preferences. You can also swipe down from the top
  • Enabled: Just what it says on the tin :p
  • Receipt: Spoof receipts for purchases. This works well on iOS 12-13, not so much on 14-15.
  • Observer: Replace the appā€™s transaction observer with a hacked one. Fixes some apps, breaks others.
  • RevenueCat: Hack apps using the RevenueCat framework for purchases and subscriptions.
  • Touches: The number of fingers required to activate the preferences, per request. Default is two, maximum is five.
  • Apply: Press this to apply whatever prefs changes you make. This closes the appā€” itā€™s intended behaviour, not a crash. Just open the app again.
Comments
  • Apps crashes instantly with EXC_BAD_ACCESS

    Apps crashes instantly with EXC_BAD_ACCESS

    I have tried several apps, but the majority crash instantly after being opened. I tried everything I came up with to no avail, both with the manual method using Sideloadly, and the AppDB method yields the same results.

    Hereā€™s the crash log of one instance:

    {"app_name":"Numero","timestamp":"2022-06-09 18:19:59.00 -0300","app_version":"5.7.1","slice_uuid":"86c2e308-5e84-3a43-816d-385a006d4808","build_version":"7","platform":2,"bundleID":"com.google.ios.youtube.6dd68610a401198fe72cf7722702adb63a388a0c.0","share_with_app_devs":0,"is_first_party":0,"bug_type":"309","os_version":"iPhone OS 15.4.1 (19E258)","incident_id":"CE5E1AB8-61A8-45F4-AEF6-3ADFF476E99D","name":"Numero"} { "uptime" : 61000, "procLaunch" : "2022-06-09 18:19:57.6987 -0300", "procRole" : "Foreground", "version" : 2, "userID" : 501, "deployVersion" : 210, "modelCode" : "iPhone14,3", "procStartAbsTime" : 1485287438368, "coalitionID" : 1147, "osVersion" : { "isEmbedded" : true, "train" : "iPhone OS 15.4.1", "releaseType" : "User", "build" : "19E258" }, "captureTime" : "2022-06-09 18:19:59.4162 -0300", "incident" : "CE5E1AB8-61A8-45F4-AEF6-3ADFF476E99D", "bug_type" : "309", "pid" : 8015, "procExitAbsTime" : 1485328542776, "cpuType" : "ARM-64", "procName" : "Numero", "procPath" : "/private/var/containers/Bundle/Application/9EB2A282-4A96-476F-BDA6-9FC386F474FF/Numero.app/Numero", "bundleInfo" : {"CFBundleShortVersionString":"5.7.1","CFBundleVersion":"7","CFBundleIdentifier":"com.google.ios.youtube.6dd68610a401198fe72cf7722702adb63a388a0c.0","DTAppStoreToolsBuild":"13E114"}, "storeInfo" : {"deviceIdentifierForVendor":"0A45CA65-0309-407F-AF8E-D3C6F624D20F","thirdParty":true}, "parentProc" : "launchd", "parentPid" : 1, "coalitionName" : "com.google.ios.youtube.6dd68610a401198fe72cf7722702adb63a388a0c.0", "crashReporterKey" : "d898a4f2f8648ec72e7e779d65c73c8e5f7d8ac1", "basebandVersion" : "1.59.03", "vmRegionInfo" : "0 is not in any region. Bytes before following region: 4374724608\n REGION TYPE START - END [ VSIZE] PRT/MAX SHRMOD REGION DETAIL\n UNUSED SPACE AT START\n---> \n __TEXT 104c10000-1065bc000 [ 25.7M] r-x/r-x SM=COW ...ro.app/Numero", "isCorpse" : 1, "exception" : {"codes":"0x0000000000000001, 0x0000000000000000","rawCodes":[1,0],"type":"EXC_BAD_ACCESS","signal":"SIGSEGV","subtype":"KERN_INVALID_ADDRESS at 0x0000000000000000"}, "termination" : {"flags":0,"code":11,"namespace":"SIGNAL","indicator":"Segmentation fault: 11","byProc":"exc handler","byPid":8015}, "ktriageinfo" : "VM - pmap_enter failed with resource shortage\n", "vmregioninfo" : "0 is not in any region. Bytes before following region: 4374724608\n REGION TYPE START - END [ VSIZE] PRT/MAX SHRMOD REGION DETAIL\n UNUSED SPACE AT START\n---> \n __TEXT 104c10000-1065bc000 [ 25.7M] r-x/r-x SM=COW ...ro.app/Numero", "faultingThread" : 0, "threads" : [{"triggered":true,"id":467824,"threadState":{"x":[{"value":0},{"value":0},{"value":0},{"value":4472447636},{"value":4472447664},{"value":32},{"value":32},{"value":1},{"value":0},{"value":0},{"value":4472447624},{"value":4472447625},{"value":131072},{"value":139264},{"value":4458361400},{"value":1024121851},{"value":9514639296,"symbolLocation":0,"symbol":"_platform_strlen"},{"value":15027386061100950080},{"value":0},{"value":0},{"value":4472241616},{"value":8855308618,"objc-selector":"_setInvalidatesViewsOnAppearanceChange:"},{"value":1},{"value":0},{"value":0},{"value":0},{"value":8863027971,"objc-selector":"application:didFinishLaunchingWithOptions:"},{"value":730267748},{"value":16}],"flavor":"ARM_THREAD_STATE64","lr":{"value":4467950828},"cpsr":{"value":1610616832},"fp":{"value":6092146448},"sp":{"value":6092146432},"esr":{"value":2449473542,"description":"(Data Abort) byte read Translation fault"},"pc":{"value":9514639300,"matchesCrashFrame":1},"far":{"value":0}},"queue":"com.apple.main-thread","frames":[{"imageOffset":4036,"symbol":"_platform_strlen","symbolLocation":4,"imageIndex":0},{"imageOffset":50412,"symbol":"std::__1::char_traits::length(char const*)","symbolLocation":24,"imageIndex":1},{"imageOffset":95620,"symbol":"std::__1::basic_ostream<char, std::__1::char_traits >& std::__1::operator<<<std::__1::char_traits >(std::__1::basic_ostream<char, std::__1::char_traits >&, char const*)","symbolLocation":48,"imageIndex":1},{"imageOffset":3155616,"symbol":"LinphonePrivate::SysPaths::getConfigPath(void*)","symbolLocation":516,"imageIndex":2},{"imageOffset":3158104,"symbol":"LinphonePrivate::Paths::getPath(LinphonePrivate::Paths::Type, void*)","symbolLocation":112,"imageIndex":2},{"imageOffset":5623492,"symbol":"linphone_factory_get_config_dir","symbolLocation":40,"imageIndex":2},{"imageOffset":2733784,"symbol":"+[LinphoneManager preferenceFile:]","symbolLocation":88,"imageIndex":3},{"imageOffset":2723408,"symbol":"-[LinphoneManager migrateImportantFiles]","symbolLocation":104,"imageIndex":3},{"imageOffset":2685056,"symbol":"-[LinphoneManager init]","symbolLocation":696,"imageIndex":3},{"imageOffset":2683912,"symbol":"+[LinphoneManager instance]","symbolLocation":84,"imageIndex":3},{"imageOffset":2591716,"symbol":"-[NumeroAppDelegate application:didFinishLaunchingWithOptions:]","symbolLocation":4448,"imageIndex":3},{"imageOffset":3297160,"symbol":"-[UIApplication _handleDelegateCallbacksWithOptions:isSuspended:restoreState:]","symbolLocation":340,"imageIndex":4},{"imageOffset":5291428,"symbol":"-[UIApplication _callInitializationDelegatesWithActions:forCanvas:payload:fromOriginatingProcess:]","symbolLocation":3572,"imageIndex":4},{"imageOffset":5196120,"symbol":"-[UIApplication _runWithMainScene:transitionContext:completion:]","symbolLocation":1180,"imageIndex":4},{"imageOffset":3483024,"symbol":"-[_UISceneLifecycleMultiplexer completeApplicationLaunchWithFBSScene:transitionContext:]","symbolLocation":152,"imageIndex":4},{"imageOffset":1756228,"symbol":"_UIScenePerformActionsWithLifecycleActionMask","symbolLocation":104,"imageIndex":4},{"imageOffset":2979308,"symbol":"__101-[_UISceneLifecycleMultiplexer _evalTransitionToSettings:fromSettings:forceExit:withTransitionStore:]_block_invoke","symbolLocation":216,"imageIndex":4},{"imageOffset":4158204,"symbol":"-[_UISceneLifecycleMultiplexer _performBlock:withApplicationOfDeactivationReasons:fromReasons:]","symbolLocation":248,"imageIndex":4},{"imageOffset":6512548,"symbol":"-[_UISceneLifecycleMultiplexer _evalTransitionToSettings:fromSettings:forceExit:withTransitionStore:]","symbolLocation":772,"imageIndex":4},{"imageOffset":6034772,"symbol":"-[_UISceneLifecycleMultiplexer uiScene:transitionedFromState:withTransitionContext:]","symbolLocation":340,"imageIndex":4},{"imageOffset":1759792,"symbol":"__186-[_UIWindowSceneFBSSceneTransitionContextDrivenLifecycleSettingsDiffAction _performActionsForUIScene:withUpdatedFBSScene:settingsDiff:fromSettings:transitionContext:lifecycleActionType:]_block_invoke","symbolLocation":196,"imageIndex":4},{"imageOffset":2545972,"symbol":"+[BSAnimationSettings(UIKit) tryAnimatingWithSettings:actions:completion:]","symbolLocation":892,"imageIndex":4},{"imageOffset":1767732,"symbol":"_UISceneSettingsDiffActionPerformChangesWithTransitionContext","symbolLocation":276,"imageIndex":4},{"imageOffset":2726560,"symbol":"-[_UIWindowSceneFBSSceneTransitionContextDrivenLifecycleSettingsDiffAction _performActionsForUIScene:withUpdatedFBSScene:settingsDiff:fromSettings:transitionContext:lifecycleActionType:]","symbolLocation":384,"imageIndex":4},{"imageOffset":7464292,"symbol":"__64-[UIScene scene:didUpdateWithDiff:transitionContext:completion:]_block_invoke.615","symbolLocation":776,"imageIndex":4},{"imageOffset":1957140,"symbol":"-[UIScene _emitSceneSettingsUpdateResponseForCompletion:afterSceneUpdateWork:]","symbolLocation":256,"imageIndex":4},{"imageOffset":2233640,"symbol":"-[UIScene scene:didUpdateWithDiff:transitionContext:completion:]","symbolLocation":288,"imageIndex":4},{"imageOffset":3502996,"symbol":"-[UIApplication workspace:didCreateScene:withTransitionContext:completion:]","symbolLocation":584,"imageIndex":4},{"imageOffset":2719076,"symbol":"-[UIApplicationSceneClientAgent scene:didInitializeWithEvent:completion:]","symbolLocation":388,"imageIndex":4},{"imageOffset":168596,"symbol":"-[FBSScene _callOutQueue_agent_didCreateWithTransitionContext:completion:]","symbolLocation":440,"imageIndex":5},{"imageOffset":323728,"symbol":"__94-[FBSWorkspaceScenesClient createWithSceneID:groupID:parameters:transitionContext:completion:]_block_invoke.215","symbolLocation":128,"imageIndex":5},{"imageOffset":41736,"symbol":"-[FBSWorkspace _calloutQueue_executeCalloutFromSource:withBlock:]","symbolLocation":240,"imageIndex":5},{"imageOffset":47448,"symbol":"__94-[FBSWorkspaceScenesClient createWithSceneID:groupID:parameters:transitionContext:completion:]_block_invoke","symbolLocation":372,"imageIndex":5},{"imageOffset":14892,"symbol":"_dispatch_client_callout","symbolLocation":20,"imageIndex":6},{"imageOffset":29920,"symbol":"_dispatch_block_invoke_direct","symbolLocation":264,"imageIndex":6},{"imageOffset":48240,"symbol":"FBSSERIALQUEUE_IS_CALLING_OUT_TO_A_BLOCK","symbolLocation":48,"imageIndex":5},{"imageOffset":45120,"symbol":"-[FBSSerialQueue _targetQueue_performNextIfPossible]","symbolLocation":220,"imageIndex":5},{"imageOffset":63232,"symbol":"-[FBSSerialQueue _performNextFromRunLoopSource]","symbolLocation":28,"imageIndex":5},{"imageOffset":769796,"symbol":"CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION","symbolLocation":28,"imageIndex":7},{"imageOffset":838800,"symbol":"__CFRunLoopDoSource0","symbolLocation":208,"imageIndex":7},{"imageOffset":25064,"symbol":"__CFRunLoopDoSources0","symbolLocation":368,"imageIndex":7},{"imageOffset":47948,"symbol":"__CFRunLoopRun","symbolLocation":828,"imageIndex":7},{"imageOffset":128696,"symbol":"CFRunLoopRunSpecific","symbolLocation":600,"imageIndex":7},{"imageOffset":4980,"symbol":"GSEventRunModal","symbolLocation":164,"imageIndex":8},{"imageOffset":5324424,"symbol":"-[UIApplication _run]","symbolLocation":1100,"imageIndex":4},{"imageOffset":2708972,"symbol":"UIApplicationMain","symbolLocation":364,"imageIndex":4},{"imageOffset":173868,"symbol":"main","symbolLocation":116,"imageIndex":3},{"imageOffset":105700,"symbol":"start","symbolLocation":520,"imageIndex":9}]},{"id":467836,"queue":"com.google.fira.worker","frames":[{"imageOffset":13612,"symbol":"fsync","symbolLocation":8,"imageIndex":10},{"imageOffset":449544,"imageIndex":11},{"imageOffset":487644,"imageIndex":11},{"imageOffset":448092,"imageIndex":11},{"imageOffset":364480,"imageIndex":11},{"imageOffset":149888,"imageIndex":11},{"imageOffset":338888,"imageIndex":11},{"imageOffset":279080,"symbol":"sqlite3_step","symbolLocation":312,"imageIndex":11},{"imageOffset":17370968,"symbol":"-[APMSqliteStore executeSQLStatement:error:]","symbolLocation":104,"imageIndex":3},{"imageOffset":17370824,"symbol":"-[APMSqliteStore executeSQL:error:]","symbolLocation":164,"imageIndex":3},{"imageOffset":17359520,"symbol":"-[APMSqliteStore ensureTableWithName:createSQL:requiredColumnNames:addOnColumns:error:]","symbolLocation":340,"imageIndex":3},{"imageOffset":17356208,"symbol":"-[APMSqliteStore ensureTableWithName:elementaryColumnInfo:addOnColumnInfo:error:]","symbolLocation":1644,"imageIndex":3},{"imageOffset":17358376,"symbol":"-[APMSqliteStore ensureTableWithName:elementaryColumnInfo:addOnColumnInfo:modifyColumnInfo:error:]","symbolLocation":124,"imageIndex":3},{"imageOffset":16831200,"symbol":"-[APMDatabase ensureAllTables]","symbolLocation":5204,"imageIndex":3},{"imageOffset":16825524,"symbol":"-[APMDatabase initializeDatabaseResourcesWithContext:databasePath:error:]","symbolLocation":140,"imageIndex":3},{"imageOffset":16784264,"symbol":"-[APMDatabase initWithDatabaseName:persistedConfig:error:]","symbolLocation":188,"imageIndex":3},{"imageOffset":16976284,"symbol":"__47-[APMMeasurement startMeasurementOnWorkerQueue]_block_invoke","symbolLocation":1420,"imageIndex":3},{"imageOffset":16974584,"symbol":"-[APMMeasurement startMeasurementOnWorkerQueue]","symbolLocation":208,"imageIndex":3},{"imageOffset":16972508,"symbol":"-[APMMeasurement setEnabledOnWorkerQueue:]","symbolLocation":272,"imageIndex":3},{"imageOffset":16972220,"symbol":"__29-[APMMeasurement setEnabled:]_block_invoke","symbolLocation":44,"imageIndex":3},{"imageOffset":17325944,"symbol":"__51-[APMScheduler scheduleOnWorkerQueueBlockID:block:]_block_invoke","symbolLocation":44,"imageIndex":3},{"imageOffset":7784,"symbol":"_dispatch_call_block_and_release","symbolLocation":32,"imageIndex":6},{"imageOffset":14892,"symbol":"_dispatch_client_callout","symbolLocation":20,"imageIndex":6},{"imageOffset":45348,"symbol":"_dispatch_lane_serial_drain","symbolLocation":668,"imageIndex":6},{"imageOffset":48256,"symbol":"_dispatch_lane_invoke","symbolLocation":392,"imageIndex":6},{"imageOffset":91392,"symbol":"_dispatch_workloop_worker_thread","symbolLocation":648,"imageIndex":6},{"imageOffset":4284,"symbol":"_pthread_wqthread","symbolLocation":288,"imageIndex":12},{"imageOffset":3676,"symbol":"start_wqthread","symbolLocation":8,"imageIndex":12}]},{"id":467837,"queue":"com.apple.UIKit.KeyboardManagement","frames":[{"imageOffset":8568,"symbol":"__ulock_wait","symbolLocation":8,"imageIndex":10},{"imageOffset":17436,"symbol":"_dlock_wait","symbolLocation":56,"imageIndex":6},{"imageOffset":16848,"symbol":"_dispatch_thread_event_wait_slow","symbolLocation":56,"imageIndex":6},{"imageOffset":77680,"symbol":"DISPATCH_WAIT_FOR_QUEUE","symbolLocation":356,"imageIndex":6},{"imageOffset":76584,"symbol":"_dispatch_sync_f_slow","symbolLocation":144,"imageIndex":6},{"imageOffset":3595784,"symbol":"__37-[_UIRemoteKeyboards startConnection]block_invoke_3","symbolLocation":136,"imageIndex":4},{"imageOffset":140820,"symbol":"invoking","symbolLocation":148,"imageIndex":7},{"imageOffset":262400,"symbol":"-[NSInvocation invoke]","symbolLocation":468,"imageIndex":7},{"imageOffset":215272,"symbol":"NSXPCCONNECTION_IS_CALLING_OUT_TO_REPLY_BLOCK","symbolLocation":24,"imageIndex":13},{"imageOffset":351732,"symbol":"-[NSXPCConnection _decodeAndInvokeReplyBlockWithEvent:sequence:replyInfo:]","symbolLocation":572,"imageIndex":13},{"imageOffset":197680,"symbol":"__88-[NSXPCConnection _sendInvocation:orArguments:count:methodSignature:selector:withProxy:]_block_invoke_3","symbolLocation":212,"imageIndex":13},{"imageOffset":112296,"symbol":"_xpc_connection_reply_callout","symbolLocation":124,"imageIndex":14},{"imageOffset":60364,"symbol":"_xpc_connection_call_reply_async","symbolLocation":88,"imageIndex":14},{"imageOffset":15020,"symbol":"_dispatch_client_callout3","symbolLocation":20,"imageIndex":6},{"imageOffset":135700,"symbol":"_dispatch_mach_msg_async_reply_invoke","symbolLocation":340,"imageIndex":6},{"imageOffset":45056,"symbol":"_dispatch_lane_serial_drain","symbolLocation":376,"imageIndex":6},{"imageOffset":48308,"symbol":"_dispatch_lane_invoke","symbolLocation":444,"imageIndex":6},{"imageOffset":91392,"symbol":"_dispatch_workloop_worker_thread","symbolLocation":648,"imageIndex":6},{"imageOffset":4284,"symbol":"_pthread_wqthread","symbolLocation":288,"imageIndex":12},{"imageOffset":3676,"symbol":"start_wqthread","symbolLocation":8,"imageIndex":12}]},{"id":467838,"frames":[{"imageOffset":3668,"symbol":"start_wqthread","symbolLocation":0,"imageIndex":12}]},{"id":467839,"name":"com.apple.uikit.eventfetch-thread","frames":[{"imageOffset":5344,"symbol":"mach_msg_trap","symbolLocation":8,"imageIndex":10},{"imageOffset":6948,"symbol":"mach_msg","symbolLocation":76,"imageIndex":10},{"imageOffset":30752,"symbol":"__CFRunLoopServiceMachPort","symbolLocation":372,"imageIndex":7},{"imageOffset":48300,"symbol":"__CFRunLoopRun","symbolLocation":1180,"imageIndex":7},{"imageOffset":128696,"symbol":"CFRunLoopRunSpecific","symbolLocation":600,"imageIndex":7},{"imageOffset":99348,"symbol":"-[NSRunLoop(NSRunLoop) runMode:beforeDate:]","symbolLocation":236,"imageIndex":13},{"imageOffset":367788,"symbol":"-[NSRunLoop(NSRunLoop) runUntilDate:]","symbolLocation":92,"imageIndex":13},{"imageOffset":4775856,"symbol":"-[UIEventFetcher threadMain]","symbolLocation":524,"imageIndex":4},{"imageOffset":427356,"symbol":"NSThread__start","symbolLocation":808,"imageIndex":13},{"imageOffset":6572,"symbol":"_pthread_start","symbolLocation":148,"imageIndex":12},{"imageOffset":3688,"symbol":"thread_start","symbolLocation":8,"imageIndex":12}]},{"id":467840,"frames":[{"imageOffset":3668,"symbol":"start_wqthread","symbolLocation":0,"imageIndex":12}]},{"id":467841,"queue":"com.google.firebase.crashlytics.ios.binary-images","frames":[{"imageOffset":12020,"symbol":"write","symbolLocation":8,"imageIndex":10},{"imageOffset":113180,"symbol":"__FIRCLSFileWriteWithRetries_block_invoke","symbolLocation":44,"imageIndex":15},{"imageOffset":112732,"symbol":"FIRCLSFileLoopWithWriteBlock","symbolLocation":108,"imageIndex":15},{"imageOffset":113120,"symbol":"FIRCLSFileWriteWithRetries","symbolLocation":96,"imageIndex":15},{"imageOffset":112324,"symbol":"FIRCLSFileWriteToFileDescriptor","symbolLocation":44,"imageIndex":15},{"imageOffset":112612,"symbol":"FIRCLSFileWriteToFileDescriptorOrBuffer","symbolLocation":188,"imageIndex":15},{"imageOffset":113332,"symbol":"FIRCLSFileWriteUInt64","symbolLocation":140,"imageIndex":15},{"imageOffset":115004,"symbol":"FIRCLSFileWriteHashEntryUint64","symbolLocation":56,"imageIndex":15},{"imageOffset":32776,"symbol":"FIRCLSBinaryImageRecordDetails","symbolLocation":140,"imageIndex":15},{"imageOffset":34192,"symbol":"FIRCLSBinaryImageRecordSlice","symbolLocation":268,"imageIndex":15},{"imageOffset":33204,"symbol":"__FIRCLSBinaryImageChanged_block_invoke","symbolLocation":140,"imageIndex":15},{"imageOffset":7784,"symbol":"_dispatch_call_block_and_release","symbolLocation":32,"imageIndex":6},{"imageOffset":14892,"symbol":"_dispatch_client_callout","symbolLocation":20,"imageIndex":6},{"imageOffset":45348,"symbol":"_dispatch_lane_serial_drain","symbolLocation":668,"imageIndex":6},{"imageOffset":48256,"symbol":"_dispatch_lane_invoke","symbolLocation":392,"imageIndex":6},{"imageOffset":91392,"symbol":"_dispatch_workloop_worker_thread","symbolLocation":648,"imageIndex":6},{"imageOffset":4284,"symbol":"_pthread_wqthread","symbolLocation":288,"imageIndex":12},{"imageOffset":3676,"symbol":"start_wqthread","symbolLocation":8,"imageIndex":12}]},{"id":467842,"queue":"com.apple.libtrace.state.block-list","frames":[{"imageOffset":8568,"symbol":"__ulock_wait","symbolLocation":8,"imageIndex":10},{"imageOffset":17436,"symbol":"_dlock_wait","symbolLocation":56,"imageIndex":6},{"imageOffset":16848,"symbol":"_dispatch_thread_event_wait_slow","symbolLocation":56,"imageIndex":6},{"imageOffset":77680,"symbol":"DISPATCH_WAIT_FOR_QUEUE","symbolLocation":356,"imageIndex":6},{"imageOffset":76584,"symbol":"_dispatch_sync_f_slow","symbolLocation":144,"imageIndex":6},{"imageOffset":42152,"symbol":"___os_state_request_for_self_block_invoke","symbolLocation":372,"imageIndex":16},{"imageOffset":7784,"symbol":"_dispatch_call_block_and_release","symbolLocation":32,"imageIndex":6},{"imageOffset":14892,"symbol":"_dispatch_client_callout","symbolLocation":20,"imageIndex":6},{"imageOffset":45348,"symbol":"_dispatch_lane_serial_drain","symbolLocation":668,"imageIndex":6},{"imageOffset":48308,"symbol":"_dispatch_lane_invoke","symbolLocation":444,"imageIndex":6},{"imageOffset":91392,"symbol":"_dispatch_workloop_worker_thread","symbolLocation":648,"imageIndex":6},{"imageOffset":4284,"symbol":"_pthread_wqthread","symbolLocation":288,"imageIndex":12},{"imageOffset":3676,"symbol":"start_wqthread","symbolLocation":8,"imageIndex":12}]},{"id":467843,"name":"AVAudioSession Notify Thread","frames":[{"imageOffset":5344,"symbol":"mach_msg_trap","symbolLocation":8,"imageIndex":10},{"imageOffset":6948,"symbol":"mach_msg","symbolLocation":76,"imageIndex":10},{"imageOffset":30752,"symbol":"__CFRunLoopServiceMachPort","symbolLocation":372,"imageIndex":7},{"imageOffset":48300,"symbol":"__CFRunLoopRun","symbolLocation":1180,"imageIndex":7},{"imageOffset":128696,"symbol":"CFRunLoopRunSpecific","symbolLocation":600,"imageIndex":7},{"imageOffset":28420,"symbol":"CADeprecated::GenericRunLoopThread::Entry(void*)","symbolLocation":164,"imageIndex":17},{"imageOffset":67824,"symbol":"CADeprecated::CAPThread::Entry(CADeprecated::CAPThread*)","symbolLocation":92,"imageIndex":17},{"imageOffset":6572,"symbol":"_pthread_start","symbolLocation":148,"imageIndex":12},{"imageOffset":3688,"symbol":"thread_start","symbolLocation":8,"imageIndex":12}]},{"id":467868,"frames":[{"imageOffset":3668,"symbol":"start_wqthread","symbolLocation":0,"imageIndex":12}]},{"id":467874,"frames":[{"imageOffset":3668,"symbol":"start_wqthread","symbolLocation":0,"imageIndex":12}]},{"id":467875,"name":"JavaScriptCore libpas scavenger","frames":[{"imageOffset":8036,"symbol":"__psynch_cvwait","symbolLocation":8,"imageIndex":10},{"imageOffset":33432,"symbol":"_pthread_cond_wait","symbolLocation":1236,"imageIndex":12},{"imageOffset":19195092,"symbol":"scavenger_thread_main","symbolLocation":1232,"imageIndex":18},{"imageOffset":6572,"symbol":"_pthread_start","symbolLocation":148,"imageIndex":12},{"imageOffset":3688,"symbol":"thread_start","symbolLocation":8,"imageIndex":12}]},{"id":467877,"frames":[{"imageOffset":3668,"symbol":"start_wqthread","symbolLocation":0,"imageIndex":12}]},{"id":467879,"queue":"com.apple.root.default-qos","frames":[{"imageOffset":8568,"symbol":"__ulock_wait","symbolLocation":8,"imageIndex":10},{"imageOffset":17436,"symbol":"_dlock_wait","symbolLocation":56,"imageIndex":6},{"imageOffset":16848,"symbol":"_dispatch_thread_event_wait_slow","symbolLocation":56,"imageIndex":6},{"imageOffset":77680,"symbol":"DISPATCH_WAIT_FOR_QUEUE","symbolLocation":356,"imageIndex":6},{"imageOffset":76584,"symbol":"_dispatch_sync_f_slow","symbolLocation":144,"imageIndex":6},{"imageOffset":24772,"symbol":"__44+[FIRIAMActionURLFollower actionURLFollower]_block_invoke","symbolLocation":996,"imageIndex":19},{"imageOffset":14892,"symbol":"_dispatch_client_callout","symbolLocation":20,"imageIndex":6},{"imageOffset":21164,"symbol":"_dispatch_once_callout","symbolLocation":32,"imageIndex":6},{"imageOffset":23740,"symbol":"+[FIRIAMActionURLFollower actionURLFollower]","symbolLocation":80,"imageIndex":19},{"imageOffset":186604,"symbol":"-[FIRIAMRuntimeManager internalStartRuntimeWithSDKSettings:]","symbolLocation":2332,"imageIndex":19},{"imageOffset":184260,"symbol":"__52-[FIRIAMRuntimeManager startRuntimeWithSDKSettings:]_block_invoke","symbolLocation":44,"imageIndex":19},{"imageOffset":7784,"symbol":"_dispatch_call_block_and_release","symbolLocation":32,"imageIndex":6},{"imageOffset":14892,"symbol":"_dispatch_client_callout","symbolLocation":20,"imageIndex":6},{"imageOffset":27460,"symbol":"_dispatch_queue_override_invoke","symbolLocation":784,"imageIndex":6},{"imageOffset":86372,"symbol":"_dispatch_root_queue_drain","symbolLocation":396,"imageIndex":6},{"imageOffset":88428,"symbol":"_dispatch_worker_thread2","symbolLocation":164,"imageIndex":6},{"imageOffset":4224,"symbol":"_pthread_wqthread","symbolLocation":228,"imageIndex":12},{"imageOffset":3676,"symbol":"start_wqthread","symbolLocation":8,"imageIndex":12}]},{"id":467885,"name":"com.google.firebase.crashlytics.MachExceptionServer","frames":[{"imageOffset":5344,"symbol":"mach_msg_trap","symbolLocation":8,"imageIndex":10},{"imageOffset":6948,"symbol":"mach_msg","symbolLocation":76,"imageIndex":10},{"imageOffset":140284,"symbol":"FIRCLSMachExceptionReadMessage","symbolLocation":80,"imageIndex":15},{"imageOffset":140092,"symbol":"FIRCLSMachExceptionServer","symbolLocation":48,"imageIndex":15},{"imageOffset":6572,"symbol":"_pthread_start","symbolLocation":148,"imageIndex":12},{"imageOffset":3688,"symbol":"thread_start","symbolLocation":8,"imageIndex":12}]}], "usedImages" : [ { "source" : "P", "arch" : "arm64e", "base" : 9514635264, "size" : 28672, "uuid" : "3b2d31b3-4991-36cc-8d6a-08a26cc1ca59", "path" : "/usr/lib/system/libsystem_platform.dylib", "name" : "libsystem_platform.dylib" }, { "source" : "P", "arch" : "arm64", "base" : 4467900416, "size" : 1048576, "uuid" : "b8ef23eb-5bff-3f51-91a9-1dc1de3f854a", "path" : "/private/var/containers/Bundle/Application/9EB2A282-4A96-476F-BDA6-9FC386F474FF/Numero.app/Frameworks/bctoolbox.framework/bctoolbox", "name" : "bctoolbox" }, { "source" : "P", "arch" : "arm64", "base" : 4557750272, "size" : 9994240, "uuid" : "b614325e-f623-3e46-838d-9a71f3340306", "path" : "/private/var/containers/Bundle/Application/9EB2A282-4A96-476F-BDA6-9FC386F474FF/Numero.app/Frameworks/linphone.framework/linphone", "name" : "linphone" }, { "source" : "P", "arch" : "arm64", "base" : 4374724608, "size" : 26918912, "uuid" : "86c2e308-5e84-3a43-816d-385a006d4808", "path" : "/private/var/containers/Bundle/Application/9EB2A282-4A96-476F-BDA6-9FC386F474FF/Numero.app/Numero", "name" : "Numero" }, { "source" : "P", "arch" : "arm64e", "base" : 7648890880, "size" : 25800704, "uuid" : "e6e89bb5-b586-3725-bf8f-4c85dcd443bd", "path" : "/System/Library/PrivateFrameworks/UIKitCore.framework/UIKitCore", "name" : "UIKitCore" }, { "source" : "P", "arch" : "arm64e", "base" : 7914696704, "size" : 708608, "uuid" : "dd7ec2ba-239d-3f93-8618-9cf707055514", "path" : "/System/Library/PrivateFrameworks/FrontBoardServices.framework/FrontBoardServices", "name" : "FrontBoardServices" }, { "source" : "P", "arch" : "arm64e", "base" : 7607521280, "size" : 286720, "uuid" : "69dac9c7-ddaf-318e-b068-be596d142a2f", "path" : "/usr/lib/system/libdispatch.dylib", "name" : "libdispatch.dylib" }, { "source" : "P", "arch" : "arm64e", "base" : 7610679296, "size" : 4546560, "uuid" : "d2716f2f-688b-3d51-ba8b-17e6553b209e", "path" : "/System/Library/Frameworks/CoreFoundation.framework/CoreFoundation", "name" : "CoreFoundation" }, { "source" : "P", "arch" : "arm64e", "base" : 8081195008, "size" : 36864, "uuid" : "75a910dc-87a4-3b3a-8c0e-a868b945f5d4", "path" : "/System/Library/PrivateFrameworks/GraphicsServices.framework/GraphicsServices", "name" : "GraphicsServices" }, { "source" : "P", "arch" : "arm64e", "base" : 4433477632, "size" : 360448, "uuid" : "d16b72c0-d619-3e48-9262-2c10a1d3066f", "path" : "/usr/lib/dyld", "name" : "dyld" }, { "source" : "P", "arch" : "arm64e", "base" : 8545329152, "size" : 221184, "uuid" : "c2fcc058-7480-3c14-b479-0064a3f843e3", "path" : "/usr/lib/system/libsystem_kernel.dylib", "name" : "libsystem_kernel.dylib" }, { "source" : "P", "arch" : "arm64e", "base" : 8129159168, "size" : 1675264, "uuid" : "d566eda7-9175-3dba-88ed-5fdf6c95957b", "path" : "/usr/lib/libsqlite3.dylib", "name" : "libsqlite3.dylib" }, { "source" : "P", "arch" : "arm64e", "base" : 9514668032, "size" : 49152, "uuid" : "b48efcbe-d4f7-308b-a3fa-172e0ea78e33", "path" : "/usr/lib/system/libsystem_pthread.dylib", "name" : "libsystem_pthread.dylib" }, { "source" : "P", "arch" : "arm64e", "base" : 7635771392, "size" : 3182592, "uuid" : "feeef9b1-b0e6-3561-adfa-3ef0302d23f8", "path" : "/System/Library/Frameworks/Foundation.framework/Foundation", "name" : "Foundation" }, { "source" : "P", "arch" : "arm64e", "base" : 9514778624, "size" : 249856, "uuid" : "b56312ce-5ade-34e5-abb4-afcbe0512205", "path" : "/usr/lib/system/libxpc.dylib", "name" : "libxpc.dylib" }, { "source" : "P", "arch" : "arm64", "base" : 4445356032, "size" : 344064, "uuid" : "a695fa46-acad-37ff-9a32-ea30ff66a03d", "path" : "/private/var/containers/Bundle/Application/9EB2A282-4A96-476F-BDA6-9FC386F474FF/Numero.app/Frameworks/FirebaseCrashlytics.framework/FirebaseCrashlytics", "name" : "FirebaseCrashlytics" }, { "source" : "P", "arch" : "arm64e", "base" : 8061960192, "size" : 106496, "uuid" : "dd7de675-1dcb-3bb7-a7d9-20cae6bfefdc", "path" : "/usr/lib/system/libsystem_trace.dylib", "name" : "libsystem_trace.dylib" }, { "source" : "P", "arch" : "arm64e", "base" : 7767973888, "size" : 176128, "uuid" : "37d438b9-289d-39b0-8b67-1b38de65305f", "path" : "/System/Library/PrivateFrameworks/AudioSession.framework/AudioSession", "name" : "AudioSession" }, { "source" : "P", "arch" : "arm64e", "base" : 7797538816, "size" : 20406272, "uuid" : "6592b928-ee2c-3bc2-b4e9-4cdc77022fe0", "path" : "/System/Library/Frameworks/JavaScriptCore.framework/JavaScriptCore", "name" : "JavaScriptCore" }, { "source" : "P", "arch" : "arm64", "base" : 4446191616, "size" : 278528, "uuid" : "31686fa3-aca3-3b5a-9319-260bd7e4c5a1", "path" : "/private/var/containers/Bundle/Application/9EB2A282-4A96-476F-BDA6-9FC386F474FF/Numero.app/Frameworks/FirebaseInAppMessaging.framework/FirebaseInAppMessaging", "name" : "FirebaseInAppMessaging" } ], "sharedCache" : { "base" : 7607189504, "size" : 2566684672, "uuid" : "dbcbede8-6a7a-33d4-a982-44d98dd7258b" }, "vmSummary" : "ReadOnly portion of Libraries: Total=926.5M resident=0K(0%) swapped_out_or_unallocated=926.5M(100%)\nWritable regions: Total=782.2M written=0K(0%) resident=0K(0%) swapped_out=0K(0%) unallocated=782.2M(100%)\n\n VIRTUAL REGION \nREGION TYPE SIZE COUNT (non-coalesced) \n=========== ======= ======= \nActivity Tracing 256K 1 \nColorSync 80K 5 \nCoreAnimation 16K 1 \nFoundation 16K 1 \nImage IO 16K 1 \nKernel Alloc Once 32K 1 \nMALLOC 579.9M 54 \nMALLOC guard page 192K 12 \nMach message 16K 1 \nSQLite page cache 576K 9 \nSTACK GUARD 224K 14 \nStack 8096K 15 \nVM_ALLOCATE 688K 8 \nWebKit Malloc 192.0M 5 \n__AUTH 4205K 484 \n__AUTH_CONST 23.6M 635 \n__CTF 759 1 \n__DATA 26.5M 697 \n__DATA_CONST 24.5M 641 \n__DATA_DIRTY 2219K 542 \n__FONT_DATA 4K 1 \n__LINKEDIT 278.4M 80 \n__OBJC_CONST 6015K 449 \n__OBJC_RO 92.1M 1 \n__OBJC_RW 3520K 1 \n__TEXT 648.4M 725 \n__UNICODE 592K 1 \ndyld private memory 1216K 3 \nlibnetwork 128K 8 \nmapped file 352.6M 27 \nshared memory 192K 4 \n=========== ======= ======= \nTOTAL 2.2G 4428 \n", "legacyInfo" : { "threadTriggered" : { "queue" : "com.apple.main-thread" } }, "trialInfo" : { "rollouts" : [ { "rolloutId" : "610d4ab6fc54bc33898403cd", "factorPackIds" : { "SIRI_UNDERSTANDING_MORPHUN" : "6201e7dc295c182621ecf027" }, "deploymentId" : 240000257 }, { "rolloutId" : "60da5e84ab0ca017dace9abf", "factorPackIds" : {

      },
      "deploymentId" : 240000008
    }
    

    ], "experiments" : [

    ] } }

    opened by SaurikSI 36
  • How to access Satella Jailed Preferences?

    How to access Satella Jailed Preferences?

    I am using AppDB to sign my IPA's but when I follow the instructions in the readme (long-pressing with two fingers) nothing shows up.

    Do you press with 2 fingers and wait for the Satella-jailed preferences to popup?

    Thank you

    opened by Aholicknight 19
  • Virtual Payment popup does not show up

    Virtual Payment popup does not show up

    Hey! I just wanna say how much I appreciate all of the hard work you've put into both Satella 2 and Satella Jailed. I have tried to get this to work for several apps, like Plex, but have been unable.

    Signing the app using my udid registration service says give me the popup says I am unable to use InApp purchases for my account, after giving me the option to pay virtually. I decided to sign the app through my normal apple id, and the menu to pay virtually does not show up at all.

    The sandbox menu shows up in the App Store settings, so I have no idea.

    iOS 15.5

    Thank you for all the help!

    opened by DKennedya 16
  • Add sideloadly tutorial for adding satellajailed

    Add sideloadly tutorial for adding satellajailed

    Added a sideloadly tutorial for adding satellajailed to decrypted IPA's. For this to work with sideloadly, I have added the satella-jailed.dylib to my releases fork

    opened by Aholicknight 13
  • Can't access Satella menu from jailed app

    Can't access Satella menu from jailed app

    Hi, I am using an iPhone 7+ on iOS 14.0.1. I have used patch.sh to inject Satella into an app, which was successful.

    I used Trollstore to sideload the app, but I'm unable to complete any purchases or open the menu inside of the app.

    opened by cakarlen 8
  • App crashes when using E-Sign

    App crashes when using E-Sign

    I just tried to inject SatellaJailed into an app with E-Sign, I followed the tutorial in the README.md. But after installing and opening the app, it crashes on launch.

    I'm not sure what information I can provide that could be useful to you, so let me know and I would be happy to provide it!

    opened by DarthGigi 7
  • [*] Error: OS is unknown or unsupported

    [*] Error: OS is unknown or unsupported

    Hey sir i really appreciate your work <3 When i run the command ( sh patch.sh -v 15 ) i get this

    [*] Unzipping Orion 14-15 framework... [*] Checking dependencies... [*] Error: OS is unknown or unsupported

    NOTE : Iam using WSL Linux (Ubuntu) on Windows 10

    opened by Echtar 6
  • [Bug] Error: Couldn't find .ipa file

    [Bug] Error: Couldn't find .ipa file

    When I try to run sh patch.sh on WSL Kali-Linux, I get this error. The workaround is to enter sh patch.sh -i [IPA file name] but is there a way to make it run with just sh patch.sh?

    image

    opened by korboybeats 5
  • SatellaJailed does not work with Top Widgets

    SatellaJailed does not work with Top Widgets

    For some reason when I try to purchase VIP it will be stuck infinitely loading until I disable SatellaJailed. If I disable SatellaJailed then the payment prompt will show but won't activate since SatellaJailed is disabled.

    I used ESign to sideload the app with my own certificate and enabled document browser so I can see the files it creates but can't tell what's causing it to not work.

    Because I signed it with my own cert, I can't share the IPA publicly here. Do you have a email or whatever you use so I can send you the IPA and you can take a look? Thanks!

    EDIT: Added you on Discord

    opened by Aholicknight 4
  • iPhoneOS14.4.sdk appears to be missing !

    iPhoneOS14.4.sdk appears to be missing !

    Hello , Thanks for the great work with satella I really love this tweak

    I cloned the project to my mac then went to Objective-C folder and tried to run "make package" but i'm getting error :

    ==> Error: Your current SYSROOT, ā€œ/Users/dangerouspixel/theos/sdks/iPhoneOS14.4.sdk/ā€, appears to be missing.
    make: *** [before-all] Error 1
    

    already have theos & monkeydev , so I have all theos SDKs . I checked sdks folders and found that I have iPhoneOS14.5.sdk NOT iPhoneOS14.4.sdk

    I tried to search for 14.4 sdk but no luck :( can you help me with this please ? :"""(

    opened by DangerousPixel 3
  • any way to hide floating icon?

    any way to hide floating icon?

    i know there was the tap method before, but i didn't see any way to do it with the new floating icon. it would seem pointless to have the icon always visible since iAPs are usually one and done event (or semi-active for in-game currency). also it can be bothersome in an active app like drawing or gaming.

    edit: i see through the source that there's supposed to be a pop-up when you push apply, but i'm not getting the pop-up. ill do some more testing...

    edit2: after hitting apply, satella menu is just unresponsive and have to force close app. i'm guessing the menu just isn't popping up so it's waiting for a response from the menu...

    i'm using latest dylib, provided orion w/o emily. i tried with provided cydia framework or sideloadly cydia framework. still same.

    tested on ipad ios 15.4.1 on infinite painter through sideloadly and e-signing

    edit: tried on iphone ios 14.3 and the menu pops up. so it's either ios 15 or iPad issue...

    edit: figured out the problem. seems it's a ipad issue. the pop-up isn't centered. in portrait it appears off screen. in landscape it appears off centered to the right. this is on a ipad mini so it may not be applicable to bigger ipads.

    opened by mc711 3
Owner
Lilly
Emilia-tan maji tenshi
Lilly
iOS SDK for cross-platform in-app purchase and subscription infrastructure, revenue analytics, engagement automation, and integrations

Qonversion is the data platform to power in-app subscription revenue growth. fast in-app subscriptions implementation back-end infrastructure to valid

Qonversion 253 Dec 18, 2022
TPInAppReceipt is a lightweight, pure-Swift library for reading and validating Apple In App Purchase Receipt locally.

TPInAppReceipt is a lightweight, pure-Swift library for reading and validating Apple In App Purchase Receipt locally. Features Read all

Pavel T 520 Jan 4, 2023
Ruby Gem for Rails - Easy iTunes In-App Purchase Receipt validation, including auto-renewable subscriptions

Monza is a ruby gem that makes In-App Purchase receipt and Auto-Renewable subscription validation easy. You should always validate receipts on the ser

Gabriel 159 Jan 7, 2023
Easily integrate Credit Card payments module in iOS App. Swift 4.0

MFCard Buy me a coffee MFCard is an awesome looking Credit Card input & validation control. Written in Swift 3. YOoo, Now MFCard is on Swift 5. Swift

MobileFirst 362 Nov 29, 2022
In-app purchases and subscriptions made easy. Support for iOS, iPadOS, watchOS, and Mac.

In-app purchases and subscriptions made easy. Support for iOS, iPadOS, watchOS, and Mac.

RevenueCat 1.6k Jan 6, 2023
Lightweight In App Purchases Swift framework for iOS 8.0+, tvOS 9.0+ and macOS 10.10+ ā›ŗ

SwiftyStoreKit is a lightweight In App Purchases framework for iOS, tvOS, watchOS, macOS, and Mac Catalyst. Features Super easy-to-use block-based API

Andrea Bizzotto 6.1k Jan 7, 2023
Make and accept payments in your iOS app via Venmo

Venmo iOS SDK The Venmo iOS SDK lets you make and accept payments in your app using Venmo. Installation If you're using CocoaPods: If you don't have a

Venmo 170 Dec 26, 2022
Accept credit cards and PayPal in your iOS app

Important: PayPal Mobile SDKs are Deprecated. The APIs powering them will remain operational long enough for merchants to migrate, but the SDKs themse

PayPal 973 Dec 18, 2022
A lightweight iOS library for In-App Purchases

#RMStore A lightweight iOS library for In-App Purchases. RMStore adds blocks and notifications to StoreKit, plus receipt verification, content downloa

Robot Media 2.4k Dec 19, 2022
A modern In-App Purchases management framework for iOS.

MerchantKit A modern In-App Purchases management framework for iOS developers. MerchantKit dramatically simplifies the work indie developers have to d

Benjamin Mayo 1.1k Dec 17, 2022
Square In-App Payments iOS SDK SwiftUI

Square In-App Payments iOS SDK SwiftUI Build remarkable payments experiences in

Ashley Bailey 2 Mar 8, 2022
SwiftUI BusinessCard - Created iOS Business card app to practice SwiftUI

SwiftUI_BusinessCard Created iOS Business card app to practice SwiftUI

null 0 Jan 29, 2022
Handle in-app purchases in iOS in a convenient way

InAppPurchases Handle in-app purchases in iOS in a convenient way. Overview InAppPurchases covers all the basic aspects of in-app purchases in swift i

Umar Awais 4 Nov 8, 2022
With SwiftUI payment share app

Splitpayment With SwiftUI payment share app.

Ahmet Onur Şahin 3 Apr 18, 2022
OnTime - OnTime App is for Scheduling your day and prioritizing your task and also for saving notes

OnTime OnTime App is for Scheduling your day and prioritizing your task and also

Mohammed Sulaiman 1 Jan 7, 2023
Implement donate to Ukraine inside your app, with Apple Pay

DonateToUkraine gives you a simple way to provide "donate to Ukraine" functionality in your app via an official donation service (endorsed here). The service will be opened inside the app, keeping a native feel. Apple Pay is supported.

Oleg Dreyman 22 Aug 2, 2022
Ios-card-transition - iOS CocoaPod to create beautiful card transitions

CSCardTransition CSCardTransition is a small library allowing you to create wond

Creastel 12 Oct 31, 2022
Easy to use iOS library with components for input of Credit Card data.

AnimatedCardInput This library allows you to drop into your project two easily customisable, animated components that will make input of Credit Card i

Netguru 39 Oct 16, 2022
A Payment Card UI & Validator for iOS

Description Caishen provides an easy-to-use text field to ask users for payment card information and to validate the input. It serves a similar purpos

Prolific Interactive 766 Dec 28, 2022