Qianji Privacy Policy

Last Updated: 2026-08-22

1. Introduction

Welcome to Qianji - System Architecture ("Qianji"). This Privacy Policy explains how AppForges ("we", "us", or "our") handles your information when you use the Qianji application. Qianji is an offline-first technical reading app for iOS/iPadOS, Android, and HarmonyOS NEXT. All articles and images ship inside the app, and core reading, search, bookmark, and note features run on your device. Qianji on Google Play does not require you to create or sign in to a Qianji or AppForges account. Purchases and restoration use Google Play and the Google Play account used for the purchase. Qianji Direct and domestic Android channels that use AppForges accounts retain their existing sign-in and entitlement services. The AppForges account, session, and account-deletion sections below apply to those channels.

By using Qianji, you agree to the data practices described in this policy.

2. Data Minimization and Local Reading Data

Data minimization is a core design principle of Qianji: - Reading and search history, bookmarks, highlights, notes, and reading preferences are stored locally by the app and are not actively uploaded to AppForges; see Section 4 for system backup - When you sign in to Qianji Direct or a domestic Android channel using AppForges accounts, the AppForges account service processes an account identifier, profile, and email according to the OIDC scopes you authorize; the app uses the stable account identifier to associate orders and lifetime entitlement - We integrate no advertising SDK, show no ads, perform no cross-app tracking, and never sell data to third parties

All articles and images are bundled in the app package. Core features such as reading and search run offline. Preview content and cached unlocked content remain readable and searchable during an outage; sign-in, purchase, and the initial retrieval or refresh of entitlement require a network connection.

On Android, the app declares the network (INTERNET) permission for purchases and necessary communication for the relevant distribution channel. Channels using AppForges accounts also use it for OIDC sign-in and account and entitlement queries. The Google Play edition requires no AppForges sign-in and does not request its account or billing services. The app does not use this permission to upload reading history, bookmarks, highlights, or notes. Permissions and purchasing on other platforms follow the system prompts and the platform-specific provisions in this policy.

3. Technical and Transaction Data Required for Purchases

Qianji follows a "free preview + one-time purchase" model. Each channel communicates with the services needed to view prices, purchase, restore, or check entitlement. Channels using AppForges accounts also require sign-in.

3.1 AppForges Account Qianji Direct and domestic Android channels using AppForges accounts sign in with OIDC Authorization Code + PKCE. With your authorization, the account service processes the unique account identifier and the profile and email information needed for sign-in. Qianji uses the unique identifier to request orders and entitlements and does not upload reading history, bookmarks, highlights, or notes to the account service. Session credentials are kept in Android-protected private app storage.

3.2 iOS/iPadOS Purchases are completed through Apple's StoreKit 2. The related network requests are made by Apple system services; the app itself opens no network connections of its own and does not send Apple any developer-generated user identifier (appAccountToken). Purchases and restoration are maintained directly by your Apple Account and App Store transaction history. We cannot access your Apple Account, payment method, or billing details.

3.3 HarmonyOS NEXT Purchases use Huawei's in-app payment service (IAP Kit). Huawei and AppForges process relevant data to verify orders, grant entitlement, and recover entitlement after refunds; availability depends on the production version released for that platform.

3.4 Qianji Direct for Android Purchases use our first-party AppForges account service (accounts.appforges.com) and billing service. The app uses the signed-in account to obtain pricing and entitlement and opens the official checkout in the system browser, where WeChat Pay or Alipay is available. The app embeds no WeChat Pay or Alipay payment SDK, and we never receive your card number, payment-account password, or payment password.

3.5 Qianji on Google Play Qianji on Google Play uses Google Play Billing to query products, complete a one-time purchase, query existing purchases, and acknowledge purchases. The app receives product identifiers, order identifiers, purchase tokens, purchase states, and signed purchase records to verify purchases locally and restore access. It does not provide an AppForges account identifier to Google Play or upload these purchase records to AppForges account or billing services. Google Play and its related SDKs process information needed for transactions and service operation under Google's terms and privacy policy. We do not receive your Google Account password, card number, or complete payment details.

The following account and billing service description applies only to channels using those services, not the Google Play edition. Our account and billing services process the account identifier, email and profile information within the OIDC scopes you authorize, IP address, product and order data, payment channel, entitlement status, and necessary security and access logs. Orders and lifetime entitlement are associated with the signed-in account so you can sign in again to restore access after reinstalling or changing devices. We use this data only for authentication, order processing, entitlement delivery, reconciliation, refunds, fraud prevention, security, and diagnostics — not advertising or cross-app tracking. Access and diagnostic logs are deleted or anonymized when no longer needed; account, order, and entitlement records are retained for the lifetime of the account and as needed to deliver the service, handle refunds and reconciliation, or meet legal obligations.

4. Local Data Storage

Qianji stores the following five kinds of data locally on your device: - Bookmarks - Reading progress - Highlights - Notes - Preferences (such as font size and theme) This data lives in the app's private sandbox directory (SwiftData on iOS, a Room database on Android, and a relational database plus preferences storage on HarmonyOS) and is protected by the operating system's sandboxing mechanism.

The app also stores a derived search index and purchase-status caches for the relevant channel. Channels using AppForges accounts additionally store sign-in sessions and isolate entitlement caches by account. Bookmarks, reading progress, highlights, notes, and preferences are stored in the app's private storage. Qianji does not actively upload this reading data to AppForges. Android system backup and device transfer may back up or transfer the local database according to your system settings and the operating system's and backup provider's rules. The Google Play edition keeps a separate derived cache of signed purchase records, verifies it again on cold start, and queries Google Play when restoring purchases. It does not use AppForges account entitlement caches or synchronize entitlements across distribution channels.

The current version provides no AppForges-operated cloud or cross-device sync for reading data. Uninstalling removes app data from the device; whether system backup can restore it depends on your device and backup settings. AppForges cannot restore it for you. Uninstalling does not automatically refund purchases or delete the relevant platform’s purchase records. The Google Play edition can restore purchases using the original purchasing Google Play account; channels using AppForges accounts can restore entitlement by signing in again. Save anything you need to keep before uninstalling.

Android system backup: on Android devices, your local database participates in Android's built-in cloud backup and device-migration mechanisms. This backup is controlled by the Android system and your device account settings, and the data is never transmitted to us; you can turn it off in system settings.

5. Purchases and Payments

Qianji is free to download, with a selection of articles free to read; a one-time purchase (a non-consumable in-app purchase) unlocks all content. No subscriptions, no auto-renewal.

Payment processing: - iOS/iPadOS: payment is handled directly by the Apple App Store - HarmonyOS NEXT: payment is handled by the in-app payment service of Huawei AppGallery - Qianji Direct for Android: after AppForges sign-in, payment is completed via WeChat Pay or Alipay in your system browser - Qianji on Google Play: payment is handled directly by Google Play Billing On no platform do we collect or store your card number, payment-account password, or payment password. Channels using the AppForges billing service store the order number, product, channel, payment status, and purchase-verification result needed to fulfill the order and entitlement. The Google Play edition does not upload purchase records to that service.

Refunds follow the rules of the platform through which you purchased (Apple, Google Play, Huawei, or the relevant payment channel). The Google Play edition relocks content when a successful online query confirms that the purchase is invalid or absent; while offline or when a query fails, the most recently verified access state may remain temporarily. Refunds and access changes do not delete local bookmarks, progress, highlights, notes, or preferences.

6. Third-Party Services

Qianji integrates no advertising SDK. Each channel uses the services described above; the Google Play edition does not use AppForges account or billing services: - The AppForges account service (accounts.appforges.com), our first-party OIDC sign-in, account, and order-management service - The AppForges billing service, our first-party product, order, payment-status, and entitlement service - Google Play / Google Play Billing for Google Play product queries, purchases, restoration, and purchase acknowledgment, governed by Google's privacy policy - WeChat Pay and Alipay for Qianji Direct: checkout opens only in the system browser, and data handling on those pages is governed by their respective privacy policies - Apple App Store / StoreKit for iOS purchases and restoration, governed by Apple's privacy policy - Huawei AppGallery / IAP Kit for HarmonyOS purchases, governed by Huawei's privacy policy

Sharing and external links: when you use the share feature, the app passes only the article title and attribution through the system share sheet — never the article body. The website link on the About page opens https://appforges.com in your system browser.

7. Children's Privacy

Qianji is a knowledge-reading app for engineers and technical learners and is not intended for children under 14 years of age. We do not knowingly collect a minor's reading behavior. If you believe the account or purchase flow has inadvertently processed a minor's personal information, contact privacy@appforges.com.

8. Data Security

We protect your information by: - Keeping reading data in the app’s private storage; see Section 4 for system backup - Using OIDC Authorization Code + PKCE and HTTPS for channels using AppForges account and billing services, with authenticated server-side entitlement determining access for those channels - Verifying Google Play purchase signatures locally and keeping a separate cache of purchase records, verified again on cold start and checked with Google Play when restoring - Not uploading account identifiers or purchase records from the Google Play edition to AppForges, and not using AppForges Google Play server-side verification, refund scanning, or real-time developer notifications

Because your data lives on your device, its security also depends on the device itself. We recommend enabling system-level protections such as a lock-screen passcode.

9. Your Rights

You can exercise direct control over data stored on your device at any time: - View and modify: view, edit, or delete bookmarks, highlights, and notes in the app - Delete local data: uninstall the app or clear its data in system settings; this does not automatically delete your AppForges account, orders, or entitlement

The following AppForges account-deletion description applies to channels using that account system. You can manage account information from the AppForges account pages, request account deletion online at https://accounts.appforges.com/en/account/delete, or contact privacy@appforges.com to request access, correction, or deletion. When an account is deleted, we delete or anonymize account data no longer needed within 30 days, except records that must be retained by law or are needed for transaction performance, refunds, or disputes. Deleting your AppForges account does not automatically refund or delete purchase records retained by app markets such as Google Play, and it does not delete bookmarks, progress, highlights, notes, or preferences stored only on your device; you can delete those in the app or clear app data in system settings. Data retained by Apple, Google Play, Huawei, WeChat Pay, or Alipay must be managed through the relevant platform.

The Google Play edition does not create a Qianji or AppForges account, so there is no such app account to delete. Manage Google Play transaction records and Google Account data through Google's available channels. You can manage local reading records in the app. To remove all local app data, use Android's app storage settings; this deletes bookmarks, notes, and other local data on that device, so first check what you need to keep. Other channels using AppForges accounts remain subject to their account-deletion processes and retention rules. Contact privacy@appforges.com for privacy requests.

10. Changes to This Policy

We may update this Privacy Policy from time to time. For material changes (for example, a future cloud-sync feature that changes how data is handled), we will notify you through app release notes or by posting the updated policy on our website. The "Last Updated" date at the top indicates the most recent revision.

11. Contact Us

If you have any questions, concerns, or requests regarding this Privacy Policy, please contact us: - Email: privacy@appforges.com - Website: https://appforges.com/contact