Skip to content

Undefined-Token/iclick-dnet

Repository files navigation

iclick-auto

NuGet version NuGet license

English | 中文

用于iOS免越狱自动化的 C# SDK。除了 API 调用功能外,实现了断线重连和事件监听机制以及二进制meta数据包解析。

官方网站: https://iosclick.com/

安装

dotnet add package iclick-auto

或者通过 NuGet Package Manager:

Install-Package iclick-auto

快速开始

using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using IClick;

class Program
{
    static async Task Main(string[] args)
    {
        // 创建客户端实例
        var client = new Client(new ClientOptions
        {
            Host = "127.0.0.1",
            Port = 23188
        });

        // 监听设备事件
        client.On("device:online", (data) =>
        {
            Console.WriteLine($"设备上线: {data}");
        });

        client.On("device:offline", (data) =>
        {
            Console.WriteLine($"设备下线: {data}");
        });

        // 连接服务器
        await client.Connect();

        // 调用 API
        var result = await client.Invoke("getDevices", new Dictionary<string, object?>
        {
            { "deviceId", "P60904DC8D3F" }
        });

        Console.WriteLine($"结果: {result}");
    }
}

API 文档

new Client(options)

创建客户端实例。

参数:

参数 类型 可选 说明 默认值
options.Host string WebSocket 服务器地址 127.0.0.1
options.Port int WebSocket 服务器端口 23188
options.AutoReconnect bool 是否启用自动重连 true
options.ReconnectDelay int 重连延迟(秒) 3
options.MaxReconnectAttempts int 最大重连次数,0表示无限 8

示例:

var client = new Client(new ClientOptions
{
    Host = "192.168.31.15",
    Port = 23188,
    AutoReconnect = true,
    ReconnectDelay = 5,
    MaxReconnectAttempts = 10
});

client.Connect()

连接到 WebSocket 服务器。

返回: Task

示例:

try
{
    await client.Connect();
    Console.WriteLine("连接成功");
}
catch (Exception error)
{
    Console.WriteLine($"连接失败: {error.Message}");
}

client.Invoke(type, params, timeout)

调用 API 方法。

参数:

  • type (string): API 类型
  • params (Dictionary<string, object?>, 可选): 请求参数,默认 null
  • timeout (int, 可选): 超时时间(秒),默认 18

返回: Task<object?>

示例:

// 发送按键
var result = await client.Invoke("sendKey", new Dictionary<string, object?>
{
    { "deviceId", "P60904DC8D3F" },
    { "key", "h" },
    { "fnkey", "COMMAND" }
});

// 获取截图(返回二进制数据)
var screenshot = await client.Invoke("getScreenShot", new Dictionary<string, object?>
{
    { "deviceId", "P60904DC8D3F" }
}) as byte[];

if (screenshot != null)
{
    System.IO.File.WriteAllBytes("screenshot.png", screenshot);
}

// 自定义超时时间
var result = await client.Invoke("someType", new Dictionary<string, object?>
{
    { "param", "value" }
}, 30);

client.On(eventName, callback)

注册事件监听器。

参数:

  • eventName (string): 事件名称
  • callback (Action<object?>): 回调函数,接收事件数据作为参数

示例:

client.On("device:online", (data) =>
{
    Console.WriteLine($"设备上线: {data}");
});

client.On("device:offline", (data) =>
{
    Console.WriteLine($"设备下线: {data}");
});

client.Off(eventName, callback)

移除事件监听器。

参数:

  • eventName (string): 事件名称
  • callback (Action<object?>, 可选): 要移除的回调函数。如果不提供,将移除该事件的所有监听器

示例:

Action<object?> handler = (data) =>
{
    Console.WriteLine($"收到事件: {data}");
};

// 注册监听器
client.On("someEvent", handler);

// 移除特定监听器
client.Off("someEvent", handler);

// 移除事件的所有监听器
client.Off("someEvent");

client.Dispose()

销毁客户端,断开连接并清理所有资源。实现 IDisposable 接口。

示例:

client.Dispose();
Console.WriteLine("客户端已销毁");

或者使用 using 语句:

using (var client = new Client())
{
    await client.Connect();
    // 使用客户端...
} // 自动调用 Dispose()

License

MIT

相关链接

问题反馈

如有问题,请在 Issues 中反馈。

About

iClick Automation Tool Without Jailbreak CSharp Package.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages