1. Text Input: The Easiest Bottleneck in iOS Automation
Taps, swipes, and screenshots all have mature solutions, but typing into an input field is especially tricky on iOS — the system doesn’t allow third-party apps to write text at will; that’s a decision baked into iOS’s security model. On Android you can type through accessibility services or the IME, but iOS has no comparable open interface.
EasyClick’s iOS USB version provides a three-level input solution, ranked from best to worst depending on what you have available:
| Level | Solution | What you need | Function/module | Experience |
|---|---|---|---|---|
| Level 1 | Proxy input | Proxy IPA | inputText |
Most direct and efficient |
| Level 2 | Custom keyboard | EC offline main program | imeApi module |
Close to the native keyboard |
| Level 3 | Shortcuts assistant | Desktop assistant program + a Shortcut | Clipboard paste | Fiddly to set up, but reusable |
The three solutions don’t conflict and can be mixed per device — in one central control, devices with a proxy use inputText, and devices without one use imeApi or the Shortcuts assistant.
2. Level 1: Proxy-Mode inputText (Most Direct)
If you have a proxy IPA and can start automation, use proxy-mode input directly:
inputText('text to input');
1. Advantages
- Most direct and efficient: one line of code completes the input, no extra configuration;
- Broad compatibility: types into any editable text field;
- Complete features: pairs with proxy mode’s other capabilities (nodes, photo library, etc.) to form a full business loop.
2. Prerequisites
You must install a proxy IPA and start the automation service — a capability only available in signing-based solutions. If the device isn’t signed and has no proxy IPA, inputText can’t be used; drop down to Level 2 or Level 3.
3. Notes
- Make sure the input field has focus first (tap the field, then call inputText);
- Some special fields (e.g., password fields) may restrict input — verify with a test;
- When typing Chinese, make sure the encoding is correct to avoid garbled text;
- For long text, watch the timeout setting so a long input doesn’t interrupt the script.
4. How inputText Works
In proxy mode, inputText uses the proxy IPA’s system-level permission to write text directly into the focused control. It’s like simulating the system keyboard’s input behavior but skipping the keyboard interaction entirely, completing it as a direct API call. That’s why it’s the fastest and most compatible — but also the most dependent on the proxy IPA’s system capability: if the proxy IPA isn’t available, inputText can’t work.
3. Level 2: imeApi Custom Keyboard (Proxy-Free)
When you don’t have a proxy IPA but have the EC offline main program installed as a keyboard, you can input text through the imeApi module.
1. Configuration Steps
- Install the EC offline main program on the phone;
- Enable the EC offline main program keyboard in the phone’s keyboard list (Settings → General → Keyboard → Add New Keyboard);
- Start the forwarding service first:
imeApi.forwardImeServer(); // start forwarding; required before other imeApi functions work - Then call other imeApi functions to complete the input.
2. Advantages
- Input without a proxy: no signed IPA needed — just the offline main program;
- Close to native input experience: writes text through the system keyboard mechanism, so compatibility is good.
3. Prerequisites
Requires the offline main program (which can be installed alongside a free signing solution). If you don’t even have the offline main program, you’re down to Level 3.
4. Notes
- Call
forwardImeServeronce during script initialization — no need to call it before every input; - Make sure the keyboard is switched to the EC offline main program, otherwise input will fail;
- If input doesn’t respond, check whether the system switched the keyboard back to the native one;
- iOS may prompt for “Allow Full Access” — enable it in the keyboard settings, or imeApi can’t work properly.
5. How the imeApi Solution Works
After the EC offline main program registers as a system keyboard, imeApi.forwardImeServer starts a local forwarding service on the phone. When a script calls imeApi input functions, the command passes through the forwarding service to the keyboard, which writes text into the focused control in its capacity as a system keyboard. The clever part: it doesn’t need the proxy IPA’s system-level permission — it uses the legitimate interface of the iOS keyboard framework.
4. Level 3: Shortcuts Assistant (Zero-Install Fallback)
Neither of the first two available? Use Shortcuts as a fallback — the principle is “copy to clipboard + paste”: an iOS Shortcut requests the computer-side endpoint for content, writes it to the clipboard, then triggers a paste.
1. Configuration Steps
- Download iOS resources — iOS Shortcuts Assistant.zip from the official EC cloud drive, unzip it, and double-click to run (on the computer);
- On the phone, create a new Shortcut: request the website API content → copy to clipboard;
- The API address looks like
http://192.168.2.26:8696(the computer’s IP); key=4eb2e1c1is the phone’s unique identifier (the Bluetooth MAC address works), used to distinguish which phone it is;- Add a device vibration action so the data can still be fetched in the background and placed into the clipboard;
- Finally, call back the
sucAPI to notify the program that execution succeeded;
- The API address looks like
- On the phone, go to Settings → Accessibility → Keyboards & Typing → Full Keyboard Access → Commands and bind a keyboard shortcut to this Shortcut;
- Right-click in the central control → Bluetooth/OTG HID Settings → Add Keyboard Shortcut, bind a combo (e.g., gui+u), and click Send;
- Enter the Add Shortcut page again, type the same combo, and send — you’ll see the Shortcut execute;
- Trigger it from the script by calling the corresponding event function.
2. Configuration Key Points
| Setting | Description |
|---|---|
| Computer IP | The LAN IP of the computer running the Shortcuts assistant |
| key parameter | The phone’s unique identifier; use the Bluetooth MAC address to distinguish phones |
| Device vibration | Ensures the Shortcut still runs in the background and fetches the data |
| suc callback | Notifies the program of success, so scripts can tell when input is complete |
| Shortcut binding | Bound in Full Keyboard Access → Commands; mapped to gui + character combos in the central control |
The setup is a bit involved, but once configured it can be shared with other phones — share the Shortcut over, and bind the keyboard shortcut in the central control.
3. Inserting Videos/Images (Same Idea)
Without a proxy, use a Shortcut to download videos to the photo library: create a Shortcut that calls “Get Contents of URL” twice — the first call fetches the real resource URL, the second fetches the resource content. Bind the gui+i shortcut and trigger it from the script to insert into the photo library.
Shortcut flow:
Get Contents of URL (API address) → get the real resource URL
↓
Get Contents of URL (real resource URL) → get the resource content
↓
Save to photo library → call back suc
5. Which Solution Should You Choose?
| Your environment | Recommended solution | One-line reason |
|---|---|---|
| Has a proxy IPA | inputText | Most direct and efficient — one line completes input |
| No proxy but has the offline main program | imeApi | Type without signing; close to native |
| Neither | Shortcuts assistant | Zero-install fallback, shareable and reusable |
| Mixed device fleet | Mix per device | The methods don’t conflict; pick per device type in the central control |
1. Designing a Mixed Approach
If your fleet has devices in different situations, choose the input method per device type in the script:
// Pseudocode: pick the input method based on device conditions
if (hasAgent) {
inputText('text content'); // has a proxy
} else if (hasMainApp) {
imeApi.forwardImeServer(); // has the offline main program
imeApi.inputText('text content');
} else {
bleEvent.keyPressChar('u'); // Shortcuts assistant
}
This design lets one central control manage devices in different situations, with each device using the input method that fits it best. In practice, note each device’s supported input method in the device ledger so scripts match automatically and don’t fail from a method mismatch.
2. Troubleshooting Failed Input
| Symptom | Possible cause | Fix |
|---|---|---|
| inputText doesn’t respond | Proxy not running, or the field doesn’t have focus | Confirm the proxy is running; tap the field first |
| imeApi doesn’t respond | Forwarding service not started, or keyboard not switched | Call forwardImeServer; switch to the EC keyboard |
| Shortcut doesn’t trigger | Shortcut not bound, or the assistant isn’t running | Check the central-control shortcut binding; confirm the desktop assistant is running |
| Garbled input | Encoding issue | Make sure the script file is UTF-8 |
| Can’t input in the background | Shortcut suspended by the system | Confirm the device vibration action is added |
3. Solution Comparison Summary
| Dimension | inputText | imeApi | Shortcuts assistant |
|---|---|---|---|
| Needs a proxy | Yes | No | No |
| Needs the main program | No | Yes | No |
| Setup complexity | Lowest | Medium | Higher |
| Input speed | Fastest | Fast | Slower (network request) |
| Reusability | Works on every device | Install the main program per device | Shareable once configured |
| Best for | Signed devices | No-signing devices with the main program | Zero-install fallback |
6. FAQ
Q1: How do you input text in iOS automation scripts? A: It depends on your environment, across three levels: with a proxy IPA installed use inputText; with the EC offline main program installed use the imeApi keyboard module (enable forwardImeServer forwarding first); with neither, use the Shortcuts assistant to copy content to the clipboard and paste it.
Q2: What are the prerequisites for inputText? A: You need a proxy IPA and the ability to start automation. In proxy mode, inputText is the most direct and efficient input method, and it can type into any editable text field.
Q3: How do I use the imeApi keyboard solution?
A: Install the EC offline main program on the phone as a keyboard, call imeApi.forwardImeServer first to start the forwarding service, then call other imeApi functions to complete the input. It suits environments that have the main program but no proxy IPA.
Q4: What is the principle behind the Shortcuts assistant for text input?
A: A phone Shortcut requests the “iOS Shortcuts Assistant” API on the computer (e.g., http://<computer IP>:8696), writes the returned content to the clipboard, and triggers a paste. A device vibration keeps the background data fetch working, and the suc callback notifies the program of completion.
Q5: How do you choose among the three input methods? A: With a proxy, use inputText; no proxy but with the main program, use imeApi; with neither, use the Shortcuts assistant. The methods do not conflict and can be mixed per device.
Q6: Can a configured Shortcuts assistant be reused? A: Yes. A configured Shortcut can be shared with other phones instead of reconfiguring every device. You only need to bind the corresponding keyboard shortcut for each phone in the central control — a practical fallback in no-signature scenarios.
Q7: How do you insert images/videos into the photo library without a proxy? A: Use the Shortcut “Get Contents of URL” action twice: the first call fetches the real resource URL, the second fetches the resource content and saves it to the photo library. After binding the gui+i shortcut, triggering it from a script inserts into the photo library without a proxy.
Q8: Does the imeApi keyboard need forwardImeServer called every time?
A: No. forwardImeServer starts the forwarding service and should be called once during script initialization. After it is enabled, the subsequent imeApi input functions work normally without calling it before every input.
Q9: Can the three input methods be mixed? A: Yes. The methods do not conflict and can be mixed per device: devices with a proxy use inputText, devices without a proxy but with the main program use imeApi, and devices with neither use the Shortcuts assistant — one central control picks the matching method per device type.
About EasyClick: A phone automation AI-agent platform covering Android no-root, iOS no-jailbreak (proxy / Bluetooth HID / OTG HID) and HarmonyOS Next, offering script development, Apple cluster control, local central control & mirroring, and cloud control systems. → Explore all products
Ready to build it for real?
Every approach in this article can be built on the EasyClick phone automation platform — full documentation, developer tools and cluster/cloud-control products, free to try.