{"id":32150510,"url":"https://github.com/453jerry/rxstorekit","last_synced_at":"2026-02-19T02:02:15.964Z","repository":{"id":65298168,"uuid":"588647710","full_name":"453jerry/RxStoreKit","owner":"453jerry","description":"Reactive extensions of StoreKit(In-App purchase)","archived":false,"fork":false,"pushed_at":"2023-01-27T15:48:29.000Z","size":26,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-02-03T04:05:49.097Z","etag":null,"topics":["iap","in-app-purchase","reactive","reactivex","rxswift","storekit","swift"],"latest_commit_sha":null,"homepage":"","language":"Swift","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/453jerry.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}},"created_at":"2023-01-13T16:31:49.000Z","updated_at":"2023-01-28T12:50:34.000Z","dependencies_parsed_at":"2023-02-13T23:31:10.709Z","dependency_job_id":null,"html_url":"https://github.com/453jerry/RxStoreKit","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/453jerry/RxStoreKit","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/453jerry%2FRxStoreKit","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/453jerry%2FRxStoreKit/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/453jerry%2FRxStoreKit/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/453jerry%2FRxStoreKit/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/453jerry","download_url":"https://codeload.github.com/453jerry/RxStoreKit/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/453jerry%2FRxStoreKit/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29600845,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-19T00:59:38.239Z","status":"online","status_checked_at":"2026-02-19T02:00:07.702Z","response_time":117,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["iap","in-app-purchase","reactive","reactivex","rxswift","storekit","swift"],"created_at":"2025-10-21T10:02:55.402Z","updated_at":"2026-02-19T02:02:15.954Z","avatar_url":"https://github.com/453jerry.png","language":"Swift","funding_links":[],"categories":[],"sub_categories":[],"readme":"# RxStoreKit\n\n[![swift](https://img.shields.io/endpoint?url=https%3A%2F%2Fswiftpackageindex.com%2Fapi%2Fpackages%2F453jerry%2FRxStoreKit%2Fbadge%3Ftype%3Dswift-versions)](https://swiftpackageindex.com/453jerry/RxStoreKit)\n[![platform](https://img.shields.io/endpoint?url=https%3A%2F%2Fswiftpackageindex.com%2Fapi%2Fpackages%2F453jerry%2FRxStoreKit%2Fbadge%3Ftype%3Dplatforms)](https://swiftpackageindex.com/453jerry/RxStoreKit)  \nReactive extensions of StoreKit\n\n## How to use\n\n### Request SKProduct\n\nCreate observable sequence of responses for SKProductRequest and subscribe it\n\n``` swift\nSKProduct.rx.request(with: [\"xxxxx\"])\n    .subscribe(onNext: { response in\n        let products = response.products\n    })\n    .dispose()\n```\n\nor\n\n```swift\nlet request = SKProductsRequest.init(productIdentifiers: [\"product_id\"])\nrequest.rx.response.subscribe { event in\n    switch event {\n    case .next(let response): \n        let products = response.products\n    default:\n        return\n    }\n}\n.dispose()\n```\n\n\n### Subscribe update payment transactons\n\n```swift\n SKPaymentQueue.default().rx.updatedTransaction\n    .subscribe(onNext: { transaction in\n        // Do what you want\n    })\n    .dispose()\n```\n\n### Subscribe product identifiers with revoked entitlements\n\n```swift\npaymentQueue.rx.productIdentifiersWithRevokedEntitlements\n    .subscribe { productIdentifier in\n        // Do what you want\n    }\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F453jerry%2Frxstorekit","html_url":"https://awesome.ecosyste.ms/projects/github.com%2F453jerry%2Frxstorekit","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F453jerry%2Frxstorekit/lists"}