Giter VIP home page Giter VIP logo

tdlibframework's Introduction

TDLibFramework

CI

Project contains pre-compiled TDLib binary for iOS, macOS, watchOS, tvOS, visionOS and simulators in .xcframework bundle.

If you're looking for pure Swift library, check out TDLibKit

Installation

Xcode (SPM)

  1. Install latest Xcode
  2. Add https://github.com/Swiftgram/TDLibFramework as SPM dependency in Project > Swift Packages. This could take a while cause it downloads ~300mb zip file with xcframework.
  3. Add TDLibFramework as your target dependency.
  4. Code!

Cocoapods & Flutter

See the docs

Usage

Simple examples can be found in Tests directory.

Create client

let clientId: Int32 = td_create_client_id()

Make request object

let request = ["@type": "getTextEntities", "text": "@telegram /test_command https://telegram.org telegram.me", "@extra": ["5", 7.0, "\\u00e4"]] as [String: Any]

JSON Serialization and Deserialization

Small example for helper functions you will need to talk with TDLib

func dictToJSONString(_ dictionary: [String: Any]) -> String {
    let dictionaryData = try! JSONSerialization.data(withJSONObject: dictionary)
    return String(data: dictionaryData, encoding: .utf8)!
}

func JSONStringToDict(_ string: String) -> [String: Any] {
    let responseData = string.data(using: .utf8)!
    return try! JSONSerialization.jsonObject(with: responseData, options: .allowFragments) as! [String: Any]
}

Synchronious requests

Only for methods with "Can be called synchronously" in docs

if let res = td_execute(dictToJSONString(request)) {
    let responseString = String(cString: res)
    let responseDict = JSONStringToDict(responseString)
    print("Response from TDLib \(responseDict)")
}

Async requests

let request = [
    "@type": "setTdlibParameters",
    "api_hash": "5e6d7b36f0e363cf0c07baf2deb26076",
    "api_id": 287311,
    "application_version": "1.0",
    "database_directory": "tdlib",
    "database_encryption_key": nil,
    "device_model": "iOS",
    "enable_storage_optimizer": true,
    "files_directory": "",
    "ignore_file_names": true,
    "system_language_code": "en",
    "system_version": "Unknown",
    "use_chat_info_database": true,
    "use_file_database": true,
    "use_message_database": true,
    "use_secret_chats": true,
    "use_test_dc": false,
] as [String: Any]
// Send request
td_send(clientId, dictToJSONString(request))

// Block thread and wait for response (not more 5.0 seconds)
if let response = td_receive(5.0) {
   let responseString = String(cString: res)
   let responseDict = JSONStringToDict(responseString)
   print("Async response from TDLib \(responseDict)")
}

Close client on exit

td_send(clientId, dictToJSONString(["@type": "Close"] as [String: String]))

Releases

You can find latest releases at Releases page.

Build

You can find more about build process in Github Actions file.

Contribute

Editing builder/Project.swift requires tuist. See installation instructions for more info.

Tuist's main distribution channel is the mise tool. Check their installation steps as well

mise install tuist
cd builder
tuist edit

Credits

  • Anton Glezman for Build Guide and basic implementation
  • Telegram Team for TDLib

License

MIT

tdlibframework's People

Contributors

kylmakalle avatar dependabot[bot] avatar github-actions[bot] avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.