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

Last update: Aug 10, 2022

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.

GitHub

https://github.com/Paisseon/SatellaJailed
Comments
  • 1. 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

    Reviewed by Aholicknight at 2022-06-26 00:49
  • 2. 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

    Reviewed by Aholicknight at 2022-06-11 07:30
  • 3. 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!

    Reviewed by DarthGigi at 2022-07-23 21:36
  • 4. [*] 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

    Reviewed by Echtar at 2022-06-12 22:23
  • 5. App crashes upon opening preferences on ios 15.1.1

    I was trying satella on a few different games, and I was successfully able to inject multiple apps with satella, and one of them actually did work, giving me free currency. However, besides one, none of them worked.

    I would like to be able to access to preferences to try different settings before giving up. It makes sense that the default settings wouldn't work for every app, but I cant even access them, so theres no way to check or try anything else.

    This is currently how I have Sideloadly setup: Screen Shot 2022-07-04 at 5 24 04 AM

    I was testing this on an iPhone 12 on iOS 15.1.1

    Im pretty sure I downloaded this commit from two days ago: https://github.com/Paisseon/SatellaJailed/commit/007fc45c05c89bb7994d65b1bf58a6296318e8ca

    Im not sure what other information I can give you besides that. It simply crashes the games whenever I do a 2-finger hold. It happens on every game I've tried.

    Reviewed by MisterSirCode at 2022-07-04 09:28
  • 6. Azule installation Path

    Hi,

    Thanks for making the script ! I only have a problem with the installation path of azure, I don't think that the home folder is a good directory. Why won't you install it to "usr/local/bin/azule" ?

    Reviewed by Ectalite at 2022-06-12 15:39
  • 7. You should be able to inject orion and the dylib with the same azule command

    Title says it all, you can just do one azule command instead of 2. It should look smth like 'azule ... -f [orion] [dylib]. Will make the thing run quite a bit faster

    Reviewed by Al4ise at 2022-06-11 11:14
  • 8. App crashes on IOS 16

    I tried to inject SatellaJailed into few apps using patch.sh and using ESign. Both ends with a crash when trying to launch the installed app. I also have builded Orion for swift-5.7 and tried to patch with new Orion.framework but result is same. I also think about CydiaSubstrate as a problem but I'm not sure.

    If you need to contact me, you can do it via https://t.me/tblackcat

    Reviewed by Arslan223 at 2022-07-19 20:42
  • 9. Hidden preferences menu

    Some games and applications where two fingers are used are uncomfortable to use because satella settings are recalled. Could you add an option so that the user can disable the recall of settings by holding down two fingers?

    Reviewed by MdFurman at 2022-07-15 21:12
  • 10. Impossible to sign with esign

    Impossibile to sign with esign . Works with azule , but esign does not work . tryed with more options , rpath o executable , framework and not , and it does not install , or if it install , it does not work .

    Reviewed by itsmylife44 at 2022-06-07 19:42
  • 11. 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!

    Reviewed by DKennedya at 2022-07-01 21:22
  • 12. 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" : [

    ] } }

    Reviewed by SaurikSI at 2022-06-09 21:42
iOS SDK for cross-platform in-app purchase and subscription infrastructure, revenue analytics, engagement automation, and integrations
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

Aug 10, 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.

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

Aug 1, 2022
Ruby Gem for Rails - Easy iTunes In-App Purchase Receipt validation, including auto-renewable subscriptions
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

Jun 12, 2022
Easily integrate Credit Card payments module in iOS App. Swift 4.0
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

Jul 6, 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.

Aug 3, 2022
Lightweight In App Purchases Swift framework for iOS 8.0+, tvOS 9.0+ and macOS 10.10+ ⛺
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

Aug 8, 2022
Make and accept payments in your iOS app via Venmo
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

May 10, 2022
Accept credit cards and PayPal in your iOS app
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

Aug 3, 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

Jul 22, 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

Aug 3, 2022
Square In-App Payments iOS SDK SwiftUI

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

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

SwiftUI_BusinessCard Created iOS Business card app to practice SwiftUI

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

Jul 18, 2022
With SwiftUI payment share app
With SwiftUI payment share app

Splitpayment With SwiftUI payment share app.

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 for saving notes

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

Jan 29, 2022
Implement donate to Ukraine inside your app, with Apple Pay
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.

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

CSCardTransition CSCardTransition is a small library allowing you to create wond

Jul 11, 2022
Easy to use iOS library with components for input of Credit Card data.
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

Jul 27, 2022
A Payment Card UI & Validator for iOS
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

Aug 4, 2022