{"id":13906949,"url":"https://github.com/appspector/ios-sdk","last_synced_at":"2025-04-07T15:11:00.064Z","repository":{"id":41132201,"uuid":"105003229","full_name":"appspector/ios-sdk","owner":"appspector","description":"AppSpector is a debugging service for mobile apps","archived":false,"fork":false,"pushed_at":"2025-02-17T08:35:52.000Z","size":5153325,"stargazers_count":72,"open_issues_count":1,"forks_count":5,"subscribers_count":11,"default_branch":"master","last_synced_at":"2025-03-31T14:11:38.086Z","etag":null,"topics":["coredata","debug","debugger","debugger-visualizer","debugging-tool","http","introspection","ios","ios-sdk","logger","logging","logs","network-analysis","network-monitoring","nslog","objective-c","remote-logging","sqlite","swift","xcode"],"latest_commit_sha":null,"homepage":"https://appspector.com","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/appspector.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-09-27T10:08:39.000Z","updated_at":"2025-03-19T00:47:37.000Z","dependencies_parsed_at":"2024-01-19T10:14:23.489Z","dependency_job_id":"0a09b3fc-018b-406f-afbd-561b83e7c1a1","html_url":"https://github.com/appspector/ios-sdk","commit_stats":null,"previous_names":[],"tags_count":59,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/appspector%2Fios-sdk","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/appspector%2Fios-sdk/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/appspector%2Fios-sdk/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/appspector%2Fios-sdk/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/appspector","download_url":"https://codeload.github.com/appspector/ios-sdk/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247675607,"owners_count":20977378,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["coredata","debug","debugger","debugger-visualizer","debugging-tool","http","introspection","ios","ios-sdk","logger","logging","logs","network-analysis","network-monitoring","nslog","objective-c","remote-logging","sqlite","swift","xcode"],"created_at":"2024-08-06T23:01:45.284Z","updated_at":"2025-04-07T15:11:00.042Z","avatar_url":"https://github.com/appspector.png","language":"Ruby","funding_links":[],"categories":["HarmonyOS"],"sub_categories":["Windows Manager"],"readme":"[![GitHub release](https://img.shields.io/github/release/appspector/ios-sdk.svg)](https://github.com/appspector/ios-sdk)\n# ![AppSpector](https://github.com/appspector/ios-sdk/raw/master/github-cover.png)\n\nWith AppSpector you can remotely debug your app running in the same room or on another continent. \nYou can measure app performance, view database content, logs, network requests and many more in realtime. \nThis is the instrument that you've been looking for. Don't limit yourself only to simple logs. \nDebugging don't have to be painful!\n\n\n* [Installation](#installation)\n* [Features](#features)\n    * [Monitors](#monitors)\n    * [End-to-End encryption](#end-to-end-encryption)\n* [Docs](#docs)\n* [Feedback](#feedback)\n\n\n## Installation\nEach app you want to use with AppSpector SDK you have to register on the web (https://app.appspector.com).\nAfter adding the application navigate to app settings and copy API key.\nTo use AppSpector on tvOS just follow installation steps below but use AppSpectorTVSDK instead.\n\n#### CocoaPods\n\u003c!-- integration-pods-start --\u003e\nTo use CocoaPods add this line to your podfile and run `pod install`:\n\n```\npod 'AppSpectorSDK'\n```\n\nTo get SDK version with [encryption](#end-to-end-encryption) feature use `AppSpectorE2E` pod:\n```\npod 'AppSpectorSDKE2E'\n```\n\n\u003c!-- integration-pods-end --\u003e\n\n#### Carthage\n\u003c!-- integration-carthage-start --\u003e\n- Install [Carthage](https://github.com/Carthage/Carthage#installing-carthage)\n- Add `binary \"https://github.com/appspector/ios-sdk/raw/1.4.0/AppSpector.json\"` to your Cartfile\n- Run `carthage update`\n- Drag [AppSpectorSDK.framework](https://github.com/appspector/ios-sdk/blob/master/AppSpectorSDK.framework.zip?raw=true) from the appropriate platform directory in Carthage/Build/ to the “Linked Frameworks and Libraries” section of your Xcode project’s “General” settings\n\nTo get SDK version with [encryption](#end-to-end-encryption) feature use `AppSpectorE2E` link:\nhttps://raw.githubusercontent.com/appspector/ios-sdk/1.4.0/AppSpectorE2E.json\n\u003c!-- integration-carthage-end --\u003e\n\n#### SPM\nAppSpector supports SPM but unfortunately not for E2E version.\nLong story short: we have to wait for guys from openssl to support Apple Sillicon,\nso if you need version with end-to-end encryption please refer to the main repo (https://github.com/appspector/ios-sdk) and use one of the installation methods available.\n\n\nFor the rest of you: to install SDK via SPM just press '+' sign in Xcode list of packages and paste repo address: 'https://github.com/appspector/ios-sdk-spm' into the search field:\n![](https://github.com/appspector/ios-sdk-spm/raw/master/spm-install-1.png)\nTwo targets will be available: for iOS and tvOS, choose which one you need, press 'next' and you are done:\n![](https://github.com/appspector/ios-sdk-spm/raw/master/spm-install-2.png)\n\n#### Manually\n\u003c!-- integration-manual-start --\u003e\nTo manually link just download [AppSpectorSDK.framework](https://github.com/appspector/ios-sdk/releases/latest/download/AppSpectorSDK.xcframework.zip) and drop AppSpectorSDK.framework to your XCode project.\nThen navigate to your project settings and under 'General' tab add AppSpectorSDK framework to 'Embedded Binaries' section.\n\nIf you plan either to submit builds with AppSpector SDK to the Apple TestFlight for testing or archive them for AdHoc distribution you'll have to perform one more step: create a new “Run Script Phase” in your app’s target’s “Build Phases” and paste the following script:\n\n```\ncode_sign() {\n    echo \"Code Signing $1 with Identity ${EXPANDED_CODE_SIGN_IDENTITY_NAME}\"\n    echo \"/usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} --preserve-metadata=identifier,entitlements $1\"\n    /usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} --preserve-metadata=identifier,entitlements \"$1\"\n}\n\ncd \"${BUILT_PRODUCTS_DIR}/${FRAMEWORKS_FOLDER_PATH}\"\n\nfor file in $(find . -type f -perm +111); do\n    if ! [[ \"$(file \"$file\")\" == *\"dynamically linked shared library\"* ]]; then\n        continue\n    fi\n\n    archs=\"$(lipo -info \"${file}\" | rev | cut -d ':' -f1 | rev)\"\n    stripped=\"\"\n    for arch in $archs; do\n        if ! [[ \"${VALID_ARCHS}\" == *\"$arch\"* ]]; then\n            lipo -remove \"$arch\" -output \"$file\" \"$file\" || exit 1\n            stripped=\"$stripped $arch\"\n        fi\n    done\n\n    if [[ \"$stripped\" != \"\" ]]; then\n        echo \"Stripped $file of architectures:$stripped\"\n        if [ \"${CODE_SIGNING_REQUIRED}\" == \"YES\" ]; then\n            code_sign \"${file}\"\n        fi\n    fi\ndone\n```\n\nThis script is required as a workaround for this [Apple AppStore bug](http://www.openradar.me/radar?id=6409498411401216)\n\n\n\u003c!-- integration-manual-end --\u003e\n\n#### Apple TV\nAppSpector is also available for tvOS, you can use any of described above methods to install it, all you need is just use `AppSpectorTVSDK` pod instead of `AppSpectorSDK` and include `AppSpectorTVSDK.framework` instead of `AppSpectorSDK.framework`.\n\n[Join our slack to discuss setup process and features](https://slack.appspector.com)\n\n\n## Features\nAppSpector provides 10 monitors that tracks different activities inside your app:\n\n### Monitors\n\n#### CoreData monitor\nBrowser for CoreData stores in your app. Shows model scheme just like Xcode editor, allows to navigate data, follow relations, switching contexts and running custom fetch requests against any model / context.\n\n![CoreData](https://storage.googleapis.com/appspector.com/images/monitor-screenshots/core-data-monitor@2x.png)\n\n#### SQLite monitor\nProvides browser for sqlite databases found in your app. Allows to track all queries, shows DB scheme and data in DB. You can issue custom SQL query on any DB and see results in browser immediately.\n\n![SQLite monitor](https://storage.googleapis.com/appspector.com/images/monitor-screenshots/sqlite-monitor@2x.png)\n\n#### HTTP monitor\nShows all HTTP traffic in your app. You can examine any request, see request/response headers and body.\nWe provide XML and JSON highliting for request/responses with formatting and folding options so even huge responses are easy to look through.\n\n![SQLite monitor](https://storage.googleapis.com/appspector.com/images/monitor-screenshots/network-monitor@2x.png)\n\n#### Logs monitor\nDisplays all logs generated by your app. We provide integration with popular logging framework [CocoaLumberjack](https://github.com/CocoaLumberjack/CocoaLumberjack), all your logs written with loggers from it will be displayed with respect to their logging levels.\n\n![Logs](https://storage.googleapis.com/appspector.com/images/monitor-screenshots/logs-monitor@2x.png)\n\n#### Location monitor\nMost of the apps are location-aware. Testing it requires changing locations yourself. In this case, location mocking is a real time saver. Just point to the location on the map and your app will change its geodata right away.\n\n![Location](https://storage.googleapis.com/appspector.com/images/monitor-screenshots/location-monitor@2x.png)\n\n#### Screenshot monitor\nSimply captures screenshot from the device.\n\n#### Performance monitor\nDisplays real-time graphs of the CPU / Memory/ Network / Disk / Battery usage.\n\n#### Environment monitor\nGathers all of the environment variables and arguments in one place, info.plist, cli arguments and much more.\n\n#### Notification Center monitor\nTracks all posted notifications and subscriptions. You can examine notification user info, sender/reciever objects, etc.\nAnd naturally you can post notifications to your app from the frontend.\n\n#### File System monitor\nProvides access to the application sandbox and bundle. Using this monitor you can download, remove or upload files, create directories and just walk around your app FS.\n\n#### Commands monitor\nIn short commands monitor is a remote callback collection. It allows you to register custom class as a command then trigger it from the frontend and complete or fail it from your code after performing some actions.\n\n#### Events monitor\nEvents monitor allows you to send custom built event to the current session. Event will be processed as any other monitor event, displayed and stored in history.\n\n### End-to-End encryption\n\nAppSpector SDK collects and stores user data including logs, DB content and network traffic. All of this can contain sensetive data so to protect your privacy we offer separate build of the SDK with E2EE feature.\nIt allows you to encrypt all data AppSpector sends from or to your device and be sure only you can decrypt it.\nTo use encryption all you need is a special SDK version (see [Installation](#installation) for more details) and [AppSpector desktop application](https://appspector.com). Due to security reasons encrypted sessions are only available in desktop app.\n\nTo start using encryption you have to create a new application from the desktop app and enable E2E switch. After that please navigate to setup guide where you can as usual get your API key and public key used for encrypted sessions. Pass this keys to the `AppSpectorConfig` and you are ready to go. Please refer to the [Configure](#configure) section for more details.\n\n## Docs\nPlease refer to [AppSpector documentation](https://docs.appspector.com/docs/appspector-in-a-nutshell) for detailed features description and guides.\n\n## Feedback\nLet us know what do you think or what would you like to be improved: [info@appspector.com](mailto:info@appspector.com).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fappspector%2Fios-sdk","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fappspector%2Fios-sdk","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fappspector%2Fios-sdk/lists"}