Easy and powerful way to interact with VK API for iOS and macOS

Overview

SwiftyVK

Platform Swift VK API Cocoapods compatible Carthage compatible License

Build status Codecov Codebeat Reviewed by Hound

Donale

Easy and powerful way to interact with VK API for iOS and macOS.

Key features

๐Ÿ˜Š It's not ios-vk-sdk ๐Ÿ˜Š
๐Ÿ One library for iOS and mac OS ๐Ÿ
๐Ÿค˜ Fully written in Swift and doesn't contain any Objective-C code ๐Ÿค˜
๐ŸŽฎ Very simple interface, made with care about those who will use it ๐ŸŽฎ
โ›‘ Fully strong typed that you can not shoot yourself in the leg โ›‘
๐Ÿ† High code quality with lot of unit tests, linter integration and CI ๐Ÿ†
๐Ÿš€ Frequent updates and bug fixes ๐Ÿš€
๐Ÿ”Š LongPoll support ๐Ÿ”Š

Table of contents


Requirements

  • Swift 4.0 +
  • iOS 8.0 +
  • macOS 10.10 +
  • Xcode 9.0 +

Integration

Carthage (recommended)

github "SwiftyVK/SwiftyVK"

CocoaPods

use_frameworks!

target '$MySuperApp$' do
  pod 'SwiftyVK'
end

Manually

  1. Just drag SwiftyVK.framework or include the whole SwiftyVK.xcodeproj into project
  2. Link SwiftyVK.framework with application in Your target preferences -> General -> Embedded binaries

Getting started

Implement SwiftyVKDelegate

To start using SwiftyVK you should implement SwiftyVKDelegate protocol in your custom VKDelegate class. It is used to notify your app about important SwiftyVK lifecycle events.

For example:

import SwiftyVK
class VKDelegateExample: SwiftyVKDelegate {

    func vkNeedsScopes(for sessionId: String) -> Scopes {
      // Called when SwiftyVK attempts to get access to user account
      // Should return a set of permission scopes
    }

    func vkNeedToPresent(viewController: VKViewController) {
      // Called when SwiftyVK wants to present UI (e.g. webView or captcha)
      // Should display given view controller from current top view controller
    }

    func vkTokenCreated(for sessionId: String, info: [String : String]) {
      // Called when user grants access and SwiftyVK gets new session token
      // Can be used to run SwiftyVK requests and save session data
    }

    func vkTokenUpdated(for sessionId: String, info: [String : String]) {
      // Called when existing session token has expired and successfully refreshed
      // You don't need to do anything special here
    }

    func vkTokenRemoved(for sessionId: String) {
      // Called when user was logged out
      // Use this method to cancel all SwiftyVK requests and remove session data
    }
}

See full implementation in Example project

Setting up VK application

  1. Create new standalone application
  2. Save application ID from Preferences -> Application ID
  3. Set up SwiftyVK with application ID and VKDelegate obtained in the previous steps:
VK.setUp(appId: String, delegate: SwiftyVKDelegate)

Releasing

in order to free up resources that holds SwiftyVK use:

VK.release()

note you must setup it again for further using

Authorization

SwiftyVK provides several ways to authorize user. Choose the one that's more suitable for you.

oAuth WebView

This is a standard authorization method which shows web view with oAuth dialog. Suitable for most cases.

VK.sessions.default.logIn(
      onSuccess: { _ in
        // Start working with SwiftyVK session here
      },
      onError: { _ in
        // Handle an error if something went wrong
      }
  )

Official VK Application

If a user has the official VK app installed on their device, SwiftyVK can be authorized using it. To do that:

  1. In Xcode -> Target -> Info -> URL Types

    • Add new URL Type like vk$YOUR_APP_ID$ (e.g. vk1234567890)
    • Add app schemas to Info.plist file:
<key>LSApplicationQueriesSchemes</key>
  <array>
    <string>vkauthorize</string>
    <string>vk$YOUR_APP_ID$</string>
  </array>
  1. Copy Application Bundle from Xcode -> $App Target$ -> General -> Bundle Identifier (e.g. com.developer.applicationName)

  2. Set copied Application Bundle to https://vk.com/apps?act=manage -> Edit App -> Settings -> App Bundle ID for iOS field

  3. Add the following code to AppDelegate:

  • For iOS 9 and below
func application(
   _ application: UIApplication,
   open url: URL,
   sourceApplication: String?,
   annotation: Any
   ) -> Bool {
   VK.handle(url: url, sourceApplication: sourceApplication)
   return true
}
  • For iOS 10 and above
func application(
    _ app: UIApplication,
    open url: URL,
    options: [UIApplicationOpenURLOptionsKey : Any] = [:]
    ) -> Bool {
    let app = options[.sourceApplication] as? String
    VK.handle(url: url, sourceApplication: app)
    return true
}
  1. Authorize as described in oAuth WebView.

    If user denies authorization in VK App, SwiftyVK will present oAuth dialog

Raw token string

If you have previously received user token, just pass it to the following method:

VK.sessions.default.logIn(rawToken: String, expires: TimeInterval)

// Start working with SwiftyVK session here

TimeInterval is a time, after which the token will no longer be valid. Pass 0 if you want token to never expire.

Interaction with VK API

SwiftyVK provides a very simple interface for interaction with VK API. All requests are performed asynchronously in a private queue by API scheduler (the scheduler sends no more than 3 requests per second by default). You can just send a request and get a response without a lot of work.

All API methods are listed here

Let's look closer to requests syntax:

Request

The basic request calls look like VK.methodGroup.methodName().

For example, to get short info about current user:

VK.API.Users.get(.empty)
    .onSuccess { /* handle and parse response */ }
    .onError { /* handle error */ }
    .send()

Object created with

VK.API.Users.get(.empty)

represents a request that can be sent immediately or can be configured first and sent later.

Parameters

If you want to get additional fields for a user in previous example, you can set request parameters:

VK.API.Users.get([
    .userId: "1",
    .fields: "sex,bdate,city"
    ])

Use .empty if you don't want to pass any parameters.

Callbacks

Requests are executed asynchronously and provide some callbacks for handling execution results:

onSuccess

This callback will be called when request has succeeded and returned Data object. You can handle and parse response using any JSON parsing method (e.g. JSONSerialization, Codable, SwiftyJSON and others)

VK.API.Users.get(.empty)
    .onSuccess {
        let response = try JSONSerialization.jsonObject(with: $0)
    }

You can throw errors in onSuccess callback, which will cause onError to be called with your error.

onError

This callback will be called when request has failed for some reason. You may handle the error that was thrown in this callback.

VK.API.Users.get(.empty)
    .onError {
        print("Request failed with error: ($0)")
     }

Cancellation

If you no longer need to send sheduled request (e.g. screen was popped out), just cancel it:

// `send()` function returns `Task` object which has `cancel()` function
let request = VK.API.Users.get([
    .userId: "1",
    .fields: "sex,bdate,city"
    ])
    .onSuccess { print($0) }
    .send()

// Cancel sheduled request.
// onSuccess callback will never be executed.
request.cancel()

Chaining

SwiftyVK allows you to chain requests. If your second request needs to consume a response from the first one, just chain them together:

VK.API.Users.get(.empty)
    .chain { response in
        // This block will be called only
        // when `users.get` method is successfully executed.
        // Receives result of executing `users.get` method.
        let user = try JSONDecoder().decode(User.self, from: response)
        return VK.API.Messages.send([
            .userId: user.id,
            .message: "Hello"
        ])
    }
    .onSuccess { response in
        // This block will be called only when both `users.get` and `messages.send`
        // methods are successfully executed.
        // `response` is a result of `messages.send` method
    }
    .onError { error in
        // This block will be called when either `users.get` or `messages.send` methods is failed.
        // Receives error of executing `users.get` or `messages.send` method.
    }
    .send()

You can make very long chains with SwiftyVK!

Configuring

In SwiftyVK each session has default configuration for its requests. Each request gets configuration from its session. Configuration contains settings such as httpMethod, attemptTimeout and others.

You can change configuration for a single request

// Set different httpMethod only for this request
VK.API.Users.get(.empty)
    .configure(with: Config(httpMethod: .POST))

or for the whole session

// Set default apiVersion value for all requests in default session
VK.sessions.default.config.apiVersion = "5.68"

You may change following configuration properties:

Property Default Description
httpMethod .GET HTTP method. You can use GET or POST. For big body (e.g. long message text in message.send method) use POST method.
apiVersion latest version VK API version. By default uses latest version. If you need different version - change this value.
language User system language Language of response. For EN Pavel Durov, for RU ะŸะฐะฒะตะป ะ”ัƒั€ะพะฒ.
attemptsMaxLimit 3 Maximum number of attempts to send request before returning an error.
attemptTimeout 10 Timeout in seconds of waiting for a response before returning an error.
handleErrors true Allow to handle specific VK errors automatically by presenting a dialog to a user when authorization, captcha solving or validation is required.

Upload files

SwiftyVK provides the ability to easily upload a file to VK servers. For example:

// Get path to image file
guard let path = Bundle.main.path(forResource: "testImage", ofType: "jpg") else { return }

// Get data from image file by path
guard let data = try Data(contentsOf: URL(fileURLWithPath: path)) else { return }

// Create SwiftyVK Media representation from given data
let media = Media.image(data: data, type: .jpg)

// Upload image to server
VK.API.Upload.Photo.toWall(media, to: .user(id: "4680178"))
    .onSuccess { print($0) }
    .onError { print($0) }
    .onProgress {
        // This callback available only for uploading requests
        // Use it to handle uploading status and show it to user
        
        switch $0 {
            case let .sent(current, of):
                print("sent", current, "of": of)
            case let .recieve(current, of):
                print("recieve", current, "of": of)
        }
    } 
    .send()

Some upload requests do not immediately download files

e.g VK.API.Upload.Photo.toMessage will return photoId which you can use in messages.send method. See docs for more info.

Interaction with LongPoll

Start LongPoll

With SwiftyVK you can interact with VK LongPoll server very easily. Just call:

VK.sessions.default.longPoll.start {
    // This callback will be executed each time
    // long poll client receives a set of new events
    print($0)
}

Handle updates

Data format is described here. LongPollEvent is an enum with associated value of type Data in each case. You can parse this data to JSON using your favorite parser like this:

VK.sessions.default.longPoll.start {
    for event in $0 {
        switch event {
            case let .type1(data):
                let json = JSON(data)
                print(json)
            default:
                break
        }
    }
}

LongPollEvent has two special cases:

.forcedStop - returned when LongPoll has experienced unexpected error and stop. You can restart it again.

.historyMayBeLost - returned when LongPoll was disconnected from server for a long time and either lpKey or timestamp is outdated. You do not need to reconnect LongPoll manually, client will do it itself. Use this case to refresh data that could have been updated while network was unavailable.

Stop LongPoll

If you don't need to receive LongPoll updates anymore, just call this function:

VK.sessions.default.longPoll.stop()

Share dialog

With SwiftyVK can make a post to user wall. To do this, you need:

VK.sessions.default.share(
    ShareContext(
        text: "This post made with #SwiftyVK ๐Ÿ––๐Ÿฝ",
        images: [
            ShareImage(data: data, type: .jpg), // JPG image representation
        ],
        link: ShareLink(
            title: "Follow the white rabbit", // Link description
            url: link // URL to site
        )
    ),
    onSuccess: { /* Handle response */ },
    onError: { /* Handle error */ }

Images and link are optional, text is required Sharing not available on macOS 10.10. If you want to use it, please make pull request to this repo.

FAQ

I can't find some API method or parameter in library

License

SwiftyVK is released under the MIT license. See LICENSE for details.

Comments
  • ShareContext don't post and dont have error too

    ShareContext don't post and dont have error too

    Description

    Describe the issue in detail here

    i am trying to share from my ios app here is my code

    no error from this

    guard let pic = PerfectLocalAuth.userdetails["picture"] as? String else {
                return
            }
            
            if let url = URL(string: pic) {
                let task = URLSession.shared.dataTask(with: url, completionHandler: { data, response, error in
                    if let data = data {
                        VK.sessions.default.share(
                            ShareContext(
                                text: "This post made with #SwiftyVK ๐Ÿ––๐Ÿฝ",
                                images: [
                                    ShareImage(data: data, type: .jpg)
                                ],
                                link: ShareLink(
                                    title: "Follow the white rabbit", // Link description
                                    url: URL(string: "localhost")! // URL to site
                                )
                            ),
                            onSuccess: { response in
                                print(response)
                        },
                            onError: { error in
                                print(error)
                        })
                    }
                })
                task.resume()
    }
    

    here is my func

    func postToFeedForVK() {
            VK.API.Users.get([
                .filters: "post",
                .returnBanned: "0",
                .fields: "first_name,last_name,photo_50,gid,name,photo"
                ])
                .onSuccess {
    
                    do {
                        let response = try JSONSerialization.jsonObject(with: $0)
                        print(response)
    
                    } catch {
                        print(error)
                    }
                }.send()
            } < this func working that mean i have token and session 
    
    

    i have already Oauth2 install so I get this so do this

    /* ==========================================================
         VK
         ========================================================== */
        @IBAction func doVkOAuth(_ sender: Any) {
            let service = "Vk"
            
            guard var parameters = services[service] else {
                print("\(service) not configured")
                return
            }
            
            let oauthswift = OAuth2Swift(
                consumerKey:    parameters["consumerKey"] ?? "",
                consumerSecret: parameters["consumerSecret"] ?? "",
                authorizeUrl:   "https://oauth.vk.com/authorize",
                accessTokenUrl: "https://oauth.vk.com/access_token",
                responseType:   "code"
            )
            
            self.oauthswift = oauthswift
            oauthswift.authorizeURLHandler = getURLHandler()
            let state = generateState(withLength: 20)
            _ = oauthswift.authorize(
                withCallbackURL: URL(string: "\(PerfectLocalAuth.host)/api/v1/oauth/return/vk")!,
                scope: "profile, city, photos, email, friends",
                state: state,
                success: { credential, response, parameters in
                    print("credential.oauthToken", credential.oauthToken)
                    
                    // send upgrade user signal to Perfect OAuth2 Server
                    let accessToken = credential.oauthToken
                    
                    do {
                        try VK.sessions.default.logIn(rawToken: accessToken, expires: TimeInterval(0)) *******
                    } catch {
                        print("VK.sessions.default.logIn rawToken error")
                    }
    

    Environment

    Key | Value | -------------------------|-------------------------------------| Platform | e.g. ios Platform version | 11.3 Xcode version | exact version e.g. 9.3.1 Swift version | exact version e.g. 4.1 SwiftyVK version | exact version3.1.5 Integration Method | cocoapods

    Checklist

    Check all points of list below and set [x] on each checked point:

    • [x ] I have looked and not find decision at README.md
    • [x ] I have looked and reproduce this behaviour in Example project
    • [ x] I have not find duplicates of this issue in issues list
    • [x ] I made an understandable short title and exhaustive description
    • [x ] I attach stack traces or errors description
    • [ x] I completely describe the environment
    • [x ] I have full filled out this issue template
    help wanted 
    opened by saroar 20
  • IPV6

    IPV6

    ะกะฟะฐัะธะฑะพ ะทะฐ ะฑะธะฑะปะธะพั‚ะตะบัƒ. ะ’ัะต ะพั‚ะปะธั‡ะฝะพ ั€ะฐะฑะพั‚ะฐะตั‚ ะฝะฐ ัะผัƒะปัั‚ะพั€ะต ะธ ะผะพะตะผ ัƒัั‚ั€ะพะนัั‚ะฒะต, ะฝะพ ะฟั€ะธะปะพะถะตะฝะธะต ะฒั‚ะพั€ะพะน ั€ะฐะท ะพั‚ะบะปะพะฝะธะปะธ ะฟะพ ะฟั€ะธั‡ะธะฝะต ะบั€ะตัˆะฐ ะฟั€ะธ ะฐะฒั‚ะพั€ะธะทะฐั†ะธะธ ะฒ ะ’ะš. ะ›ะพะณะธ, ะบะพั‚ะพั€ั‹ะต ะฟั€ะธัั‹ะปะฐะตั‚ Apple ะบะพัะฒะตะฝะฝะพ ะฝะฐะผะตะบะฐัŽั‚, ั‡ั‚ะพ ัั‚ะพ ัะฒัะทะฐะฝะฝะพ ั ะฒะฐัˆะตะน ะฑะธะฑะปะธะพั‚ะตะบะพะน. ะžะฝะธ ั‚ะตัั‚ั‹ ะฟั€ะพะฒะพะดัั‚ ะฒ IPV6 ัะตั‚ะธ. ะ’ะพะทะผะพะถะฝะพ ะฒะฐัˆะฐ ะฑะธะฑะปะธะพั‚ะตะบะฐ, ะฝะต ั€ะฐะฑะพั‚ะฐะตั‚ ะฒ IPV6. ะ•ัะปะธ ั ั‡ั‚ะพ-ั‚ะพ ะฝะต ั‚ะฐะบ ะฟะพะฝัะป, ั‚ะพ ะฟั€ะพัˆัƒ ัะพะฒะตั‚ะฐ. ะ—ะฐั€ะฐะฝะตะต ะฑะปะฐะณะพะดะฐั€ัŽ :)

    won't do 
    opened by bumsun 13
  • LongPoll

    LongPoll

    Description

    ะŸั€ะธ ะดะปะธั‚ะตะปัŒะฝะพะผ ัะฒะพั€ะฐั‡ะธะฒะฐะฝะธะธ ะฟั€ะธะปะพะถะตะฝะธั ั ะทะฐะฟัƒั‰ะตะฝะฝั‹ะผ longpoll ะธ ะฟะพัะปะตะดัƒัŽั‰ะตะผ ั€ะฐะทะฒะพั€ะฐั‡ะธะฒะฐะฝะธะธ, ะฝะฐั‡ะธะฝะฐัŽั‚ ะฒะธัะตั‚ัŒ ะฒัะต ะทะฐะฟั€ะพัั‹ ะดะพ ั‚ะตั… ะฟะพั€, ะฟะพะบะฐ longpoll ะฝะต ะพะฑะฝะพะฒะธั‚ัั.

    Environment

    Key | Value | -------------------------|-------------------------------------| Platform | e.g. ios Platform version | 11 Xcode version | 9.1 Swift version | 4 SwiftyVK version | 3.0.5 Integration Method | ัarthage

    bug 
    opened by ranix-k 12
  • ะŸะพะปัƒั‡ะตะฝะธะต LongPoll ะพะฑะฝะพะฒะปะตะฝะธะน

    ะŸะพะปัƒั‡ะตะฝะธะต LongPoll ะพะฑะฝะพะฒะปะตะฝะธะน

    New Issue Checklist

    • [x] I have looked at the README.md
    • [x] I have looked at the Example project
    • [x] I have filled out this issue template.

    Issue Info

    Info | Value | -------------------------|-------------------------------------| Platform | ios Platform Version | 10.3 Swift Version | 3.1 SwiftyVK Version | 2.0 Integration Method | cocoapods

    Issue Description

    ะ”ะพะฑั€ะพะณะพ ะฒั€ะตะผะตะฝะธ ััƒั‚ะพะบ! ะŸะพะดัะบะฐะถะธั‚ะต, ะฟะพะถะฐะปัƒะนัั‚ะฐ, ะบะฐะบ ะฟั€ะธะฝะธะผะฐะตั‚ัั ะพั‚ะฒะตั‚ ะพั‚ LongPollServer? ะฏ ะทะฐะฟัƒัะบะฐัŽ VK.LP.start() ะธ ะฟะพะดะฟะธัั‹ะฒะฐัŽััŒ ะฝะฐ ะฒัะต ะพะฑะฝะพะฒะปะตะฝะธั ะฒ NotificationCenter:

    NotificationCenter.default.addObserver(self, selector: #selector(getVKUpdates), name: VK.LP.notifications.typeAll, object: nil)

    getVKUpdates ะผะตั‚ะพะด ะฟั€ะธะบั€ะตะฟะปััŽ ัะบั€ะธะฝะพะผ. ะ”ะปั ะฟั€ะพะฒะตั€ะบะธ ั ะพั‚ะฟั€ะฐะฒะปัะป ัะตะฑะต ั ะดั€ัƒะณะพะณะพ ะฐะบะบะฐัƒะฝั‚ะฐ ัะพะพะฑั‰ะตะฝะธั, ะฝะพ ะพั‚ะฒะตั‚ ะผะฝะต ะฒัะตะณะดะฐ ะฟั€ะธั…ะพะดะธั‚

    { "history" : [

    ], "profiles" : [

    ], "messages" : { "items" : [

    ],
    "count" : 0
    

    } } 2017-06-16 23 25 06

    help wanted 
    opened by callmehowever 11
  • Crash with VK.configure

    Crash with VK.configure

    ะ—ะดั€ะฐะฒัั‚ะฒัƒะนั‚ะต. ะŸั€ะธ ะฒั‹ะทะพะฒะต ะผะตั‚ะพะดะฐ VK.configure(withAppId: Constants.vkId, delegate: self) ัƒ ะผะตะฝั ะฒั‹ะปะตั‚ะฐะตั‚ warning: could not load any Objective-C class information. This will significantly reduce the quality of type information available. screen shot 2016-11-24 at 2 12 33 pm

    opened by Victor1506 11
  • LongPool

    LongPool

    New Issue Checklist

    • [+] I have looked at the README.md
    • [+] I have looked at the Example project
    • [+] I have filled out this issue template.

    Issue Info

    Info | Value | -------------------------|-------------------------------------| Platform | iOS Platform Version | 11.0 b10 Swift Version | 4.0 SwiftyVK Version | 2.0.12 Integration Method | carthage

    Issue Description

    LongPool ะปะพะถะธั‚ ะฟั€ะธะปะพะถะตะฝะธะต ะบะพะณะดะฐ ะพั‚ะบะปัŽั‡ะฐะตั‚ัั/ัะปะฐะฑั‹ะน ะธะฝั‚ะตั€ะฝะตั‚. ะŸั€ะพัั‚ะพะน ะฟั€ะธะผะตั€ ะบะฐะบ ะฒะพัะฟั€ะพะธะทะฒะตัั‚ะธ:

    1. ะ’ะบะปัŽั‡ะธั‚ัŒ ะตะณะพ
    2. ะกะฒะตั€ะฝัƒั‚ัŒ ะฟั€ะธะปะพะถะตะฝะธะต ะธ ะพั‚ะบะปัŽั‡ะธั‚ัŒ ะธะฝั‚ะตั€ะฝะตั‚
    3. ะ ะฐะทะฒะตั€ะฝัƒั‚ัŒ ะŸั€ะธะปะพะถะตะฝะธะต ะทะฐะฒะธัะฝะตั‚ ะฟะพะปะฝะพัั‚ัŒัŽ ะดะพ ั‚ะพะณะพ ะผะพะผะตะฝั‚ะฐ, ะฟะพะบะฐ longpoll ะฝะต ะณะตั‚ะฝะตั‚ ัะตั€ะฒะตั€. ะขะฐะบ-ะถะต ะธะฝะพะณะดะฐ ะฟั€ะพัะบะฐะบะธะฒะฐะตั‚ ะบั€ะฐัˆ ะฟั€ะธะปะพะถะตะฝะธั ั ะพัˆะธะฑะบะพะน ะฝะฐ swiftyvk, ั‚.ะบ. ัƒ ะผะตะฝั ะฟั€ะธ ั€ะฐะทะฒะพั€ะฐั‡ะธะฒะฐะฝะธะธ ะฒั‹ะฟะพะปะฝัะตั‚ัั VK.API.remote ะธ ะปะพะฝะณ ั ะผะตั‚ะพะดะฐะผะธ ะบะฐะบ-ั‚ะพ ะบะพะฝั„ะปะธะบั‚ัƒะตั‚
    bug 
    opened by ranix-k 10
  • Get LongPoll Server

    Get LongPoll Server

    New Issue Checklist

    • [+] I have looked at the README.md
    • [+] I have looked at the Example project
    • [+] I have filled out this issue template.

    Issue Info

    Info | Value | -------------------------|-------------------------------------| Platform | ios Platform Version | All Swift Version | 4 SwiftyVK Version | ะฟะพัะปะตะดะฝัั Integration Method | carthage

    Issue Description

    ะ’ั‹ะทะพะฒ ะผะตั‚ะพะดะฐ messages.getLongPollServer ะดะพะปะถะตะฝ ัั€ะฐะฑะฐั‚ั‹ะฒะฐั‚ัŒ ั‚ะพะปัŒะบะพ 1 ั€ะฐะท ะธ ั‚ะพะปัŒะบะพ ะฟั€ะธ ัั‚ะฐั€ั‚ะต, ะฐ ะฝะต ะฟั€ะธ ัะฒะพั€ะฐั‡ะธะฒะฐะฝะธะธ/ั€ะฐะทะฒะพั€ะฐั‡ะธะฒะฐะฝะธะธ, ัะตะนั‡ะฐั ะธะดะตั‚ ะฟั€ะพัั‚ะพ ะปะธัˆะฝัั ะฝะฐะณั€ัƒะทะบะฐ ะฝะฐ ะทะฐะฟั€ะพัั‹.

    bug 
    opened by ranix-k 9
  • Unhandled error

    Unhandled error

    'error SwiftyVKApiError[5]: User authorization failed: invalid session.'

    This error isn't represented in the API as far as I am aware.

    The way I have fixed it is manually logging out and back in.

    opened by ilyakooo0 9
  • ะžั‚ะฟั€ะฐะฒะบะฐ/ะฟั€ะธะตะผ ะฒะธะดะตะพ ะฒ ะปะธั‡ะฝั‹ั… ัะพะพะฑั‰ะตะฝะธัั….

    ะžั‚ะฟั€ะฐะฒะบะฐ/ะฟั€ะธะตะผ ะฒะธะดะตะพ ะฒ ะปะธั‡ะฝั‹ั… ัะพะพะฑั‰ะตะฝะธัั….

    New Issue Checklist

    • [x] I have looked at the README.md
    • [x] I have looked at the Example project
    • [x] I have filled out this issue template.

    Issue Info

    Info | Value | -------------------------|-------------------------------------| Platform |ios Platform Version | 10.3 Swift Version | 3.1 SwiftyVK Version | 2.0.0 Integration Method | cocoapods

    Issue Description

    ะ—ะดั€ะฐะฒัั‚ะฒัƒะนั‚ะต! ะŸั‹ั‚ะฐัŽััŒ ะพั‚ะฟั€ะฐะฒะธั‚ัŒ ะฒะธะดะตะพ ะฒ ะปะธั‡ะฝะพะผ ัะพะพะฑั‰ะตะฝะธะธ, ะฝะพ ะฒ ะดะธะฐะปะพะณะฐั… ะฒะผะตัั‚ะพ ะฒะธะดะตะพ ะพั‚ะพะฑั€ะฐะถะฐะตั‚ัั "...". 2017-06-19 13 52 49

    ะ ะฟั€ะธ ะทะฐะณั€ัƒะทะบะต ะดะธะฐะปะพะณะฐ ะผะตั‚ะพะดะพะผ getHistory ะฟะพะปัƒั‡ะฐัŽ ะฒ ะพั‚ะฒะตั‚ ะพั‚ ัะตั€ะฒะตั€ะฐ: 2017-06-19 14 03 18 ะขัƒั‚ ะฝะตั‚ ะฟะพะปั ั url ะฒะธะดะตะพ ะดะปั ะฒะพัะฟั€ะพะธะทะฒะตะดะตะฝะธั. ะŸะพะดัะบะฐะถะธั‚ะต, ะฟะพะถะฐะปัƒะนัั‚ะฐ, ั‡ั‚ะพ ั ะดะตะปะฐัŽ ะฝะต ั‚ะฐะบ?

    help wanted 
    opened by callmehowever 8
  • ะŸะพะปัƒั‡ะธั‚ัŒ access_token ะตัะปะธ ัƒะถะต ะทะฐั€ะตะณะตัั‚ั€ะธั€ะพะฒะฐะปัั

    ะŸะพะปัƒั‡ะธั‚ัŒ access_token ะตัะปะธ ัƒะถะต ะทะฐั€ะตะณะตัั‚ั€ะธั€ะพะฒะฐะปัั

    ะ—ะดั€ะฐะฒัั‚ะฒัƒะนั‚ะต, ัะฟะฐัะธะฑะพ ะฑะพะปัŒัˆะพะต ะทะฐ ะฑะธะฑะปะธะพั‚ะตะบัƒ, ะพั‡ะตะฝัŒ ั…ะพั€ะพัˆะฐั ั€ะฐะฑะพั‚ะฐ.

    ะ’ะพะทะฝะธะบ ะฒะพะฟั€ะพั, ั ัƒะถะต ะทะฐะปะพะณะธะฝะธะปัั ะธ ะฟะพะปัƒั‡ะธะป ั‚ะพะบะตะฝ, ะฝะพ ะฝะต ัะพั…ั€ะฐะฝะธะป ะตะณะพ ะฝะธะณะดะต. ะฃะฑะธะป ะฟั€ะธะปะพะถะตะฝะธะต ะธ ะฟั€ะพะฑัƒัŽ ะปะพะณะธะฝะธั‚ัั ะทะฐะฝะพะฒะพ, ะผะพะณัƒ ะฟะพะปัƒั‡ะธั‚ัŒ ัั‚ะฐั‚ัƒั ะทะฐั€ะตะณะตัั‚ั€ะธั€ะพะฒะฐะฝ/ะฝะตั‚. ะะพ ะฝะต ะผะพะณัƒ ะฟะพะปัƒั‡ะธั‚ัŒ ัะฐะผ ั‚ะพะบะตะฝ ะธะท ะฐะฟะธัˆะบะธ, ะฑะตะท ั‚ะพะณะพ, ั‡ั‚ะพะฑั‹ ะฟะฐะฑะปะธะบะพะผ ะฝะต ัะดะตะปะฐั‚ัŒ token ะฟะพะปะต ะฒ SessionImpl.

    ะŸะพะดัะบะฐะถะธั‚ะต, ะฟะพะถะฐะปัƒะนัั‚ะฐ, ะผะพะถะตั‚ ั ั‡ั‚ะพ-ั‚ะพ ะฝะต ั‚ะฐะบ ะดะตะปะฐัŽ?

    ะกะฟะฐัะธะฑะพ

    enhancement 
    opened by akantsevoi 7
  • VK app authorization failed.

    VK app authorization failed.

    Environment

    Key | Value | -------------------------|-------------------------------------| Platform | iOS Platform version | 9.0 Xcode version | 9.1 Swift version | 4.0 SwiftyVK version | 3.1.4 Integration Method | cocoapods

    Checklist

    Check all points of list below and set [x] on each checked point:

    • [x ] I have looked and not find decision at README.md
    • [x] I have looked and reproduce this behaviour in Example project
    • [x] I have not find duplicates of this issue in issues list
    • [x] I made an understandable short title and exhaustive description
    • [x ] I attach stack traces or errors description
    • [ ] I completely describe the environment
    • [ ] I have full filled out this issue template

    Hi, i am trying to login by VK app but when window switches to VK app, after i choose to give permission the app crashes. The reason is that it cannot find the a Web view controller which i do not know what it is. Supposed that it about web authentication. but the thing is that i use VK app the authorise user. It failed at this point with the fatal error.

    private func viewController( name: String, onDismiss: (() -> ())? ) -> ControllerType { var controller: VKViewController?

        #if os(iOS)
            controller = storyboard().instantiateViewController(
                withIdentifier: name
                )
        #elseif os(macOS)
            controller = storyboard().instantiateController(
                withIdentifier: NSStoryboard.SceneIdentifier(rawValue: name)
                ) as? VKViewController
        #endif
        
        guard
            let unwrappedController = controller,
            let resultController = unwrappedController as? ControllerType
            else {
            fatalError("Can't find \(name) controller")
        }
        
        if let dismisableController = resultController as? DismisableController {
            dismisableController.onDismiss = onDismiss
        }
        
        DispatchQueue.anywayOnMain {
            self.delegate?.vkNeedToPresent(viewController: unwrappedController)
        }
        
        return resultController
    }
    

    Please help, it's kind of urgent! Many thanks in advance!

    opened by trandinhlinh94 7
  • ะŸั€ะธ ะพั‚ะผะตะฝะต ะฐะปะตั€ั‚ะฐ ะฟะตั€ะตั…ะพะดะฐ ะฝะต ะฟะพะฟะฐะดะฐะตั‚ ะฒ onError ั authorizationCancelled

    ะŸั€ะธ ะพั‚ะผะตะฝะต ะฐะปะตั€ั‚ะฐ ะฟะตั€ะตั…ะพะดะฐ ะฝะต ะฟะพะฟะฐะดะฐะตั‚ ะฒ onError ั authorizationCancelled

    SwiftyVK version: 3.4.2 Xcode: 12.5.1

    ะŸะพัะปะต VK.sessions.default.logIn ะพั‚ะบั€ั‹ะฒะฐะตั‚ัั ัะบั€ะฐะฝ

    image

    ะ•ัะปะธ ะฝะฐะถะฐั‚ัŒ ะพั‚ะผะตะฝะฐ, ั‚ะพ ะฒ ะปะพะณะฐั… ะฟะธัˆะตั‚ัั

    WF: _userSettingsForUser mobile: {
        filterBlacklist =     (
        );
        filterWhitelist =     (
        );
        restrictWeb = 1;
        useContentFilter = 0;
        useContentFilterOverrides = 0;
        whitelistEnabled = 0;
    }
    WF: _WebFilterIsActive returning: NO
    

    ะธ ะฒ onError ะฝะต ะทะฐั…ะพะดะธั‚ ั ะพัˆะธะฑะบะพะน. ะšะฐะบ ั ะดัƒะผะฐัŽ - ะดะพะปะถะตะฝ ะทะฐั…ะพะดะธั‚ัŒ ั .authorizationCancelled.

    opened by NikKovIos 4
  • SPM Resolution Failure with swift-tools-version

    SPM Resolution Failure with swift-tools-version

    Description

    Trying to add framework via spm in xCode 12.5 always fails.

    Screenshot 2021-07-15 at 09 25 55

    Environment

    Key | Value | -------------------------|-------------------------------------| Xcode version | 12.5.1 Swift version | 5 SwiftyVK version | 3.4.2 Integration Method | spm

    Checklist

    Check all points of list below and set [x] on each checked point:

    • [x] I have looked and not find decision at README.md
    • [x] I have looked and reproduce this behaviour in Example project
    • [x] I have not find duplicates of this issue in issues list
    • [x] I made an understandable short title and exhaustive description
    • [x] I attach stack traces or errors description
    • [x] I completely describe the environment
    • [x] I have full filled out this issue template
    opened by romdevios 2
  • Authorization Code Flow

    Authorization Code Flow

    Added the ability to receive code for the server-side auth. Code Flow is available only through the WebView due to the hardcoded response_type in the VK iOS app.

    opened by petersamokhin 2
  • Attention please: real maintainer please stand up!

    Attention please: real maintainer please stand up!

    ะŸั€ะธะฒะตั‚, ะดั€ัƒะณ. ะฏ ะฟั€ะธะฝัะป ะฝะตะฟั€ะพัั‚ะพะต ั€ะตัˆะตะฝะธะต ะธ ั…ะพั‡ัƒ ั€ะฐััะบะฐะทะฐั‚ัŒ ะบะฐะบ ัั‚ะพ ะฟั€ะพะธะทะพัˆะปะพ.

    ะฏ ะฝะฐั‡ะฐะป ั€ะฐะทั€ะฐะฑะพั‚ะบัƒ SwiftyVK ะตั‰ะต ะฒ ะดะฐะปะตะบะพะผ 2014 ะณะพะดัƒ ั ะฒั‹ั…ะพะดะพะผ ะฟะตั€ะฒั‹ั… ะฒะตั€ัะธะน Swift. ะ’ 2016 ั ะฟะตั€ะตัั‚ะฐะป ัะฐะผ ะธัะฟะพะปัŒะทะพะฒะฐั‚ัŒ ะตะณะพ, ะฝะพ ะฐะบั‚ะธะฒะฝะพ ะฟะพะดะดะตั€ะถะธะฒะฐะป ะธ ะฟะพะปะฝะพัั‚ัŒัŽ ะพั‚ั€ะตั„ะฐะบั‚ะพั€ะธะป ะฒ ะบะพะฝั†ะต 2017.

    ะ—ะฐ ัั‚ะพ ะฒั€ะตะผั ะบะพ ะผะฝะต ะพะฑั€ะฐั‚ะธะปะพััŒ ะฑะพะปัŒัˆะพะต ั‡ะธัะปะพ ั€ะฐะทั€ะฐะฑะพั‚ั‡ะธะบะพะฒ ั ั€ะฐะทะปะธั‡ะฝั‹ะผะธ ะฟั€ะพะฑะปะตะผะฐะผะธ, ะฒะพะฟั€ะพัะฐะผะธ ะธ ะฟั€ะตะดะปะพะถะตะฝะธัะผะธ. ะฏ ะฒ ะพะดะธะฝะพั‡ะบัƒ ะทะฐะบั€ั‹ะป ะฑะพะปัŒัˆะต 100 issues ะธ ัะดะตะปะฐะป ะฑะพะปัŒัˆะต 1000 ะบะพะผะผะธั‚ะพะฒ.

    ะš ัะพะถะฐะปะตะฝะธัŽ, ะฒัะต ัั‚ะพ ั‚ั€ะตะฑัƒะตั‚ ะผะพะธั… ั€ะตััƒั€ัะพะฒ ะธ ะฟะพัะปะตะดะฝะธะต 2 ะณะพะดะฐ ะฒัะต ั‚ัะถะตะปะตะต ัƒะดะตะปัั‚ัŒ ะธั…, ั‚ะฐะบ ะบะฐะบ ะฟั€ะพะตะบั‚ ะฑะพะปัŒัˆะต ะฝะต ัะฒะปัะตั‚ัั ั‡ะฐัั‚ัŒัŽ ะผะพะตะน ะถะธะทะฝะธ, ั€ะฐะฑะพั‚ั‹ ะธะปะธ ั…ะพะฑะฑะธ. ะžะฝ ะฒะธัะธั‚ ะณั€ัƒะทะพะผ, ะบะพั‚ะพั€ั‹ะน ะถะฐะปะบะพ ะพั‚ะฟัƒัั‚ะธั‚ัŒ ะธะท-ะทะฐ ะบะพะปะธั‡ะตัั‚ะฒะฐ ะฒะปะพะถะตะฝะฝั‹ั… ัะธะป ะธ ะฒั€ะตะผะตะฝะธ.

    ะฏ ะดัƒะผะฐะป, ั‡ั‚ะพ ะตัะปะธ ะดะฐะป ัะพะพะฑั‰ะตัั‚ะฒัƒ SwiftyVK, ั‚ะพ ะดะพะปะถะตะฝ ะฟะพะดะดะตั€ะถะธะฒะฐั‚ัŒ ะตะณะพ ะธ ะดะฐะปัŒัˆะต, ะฝะพ ะฟะพะฝัะป, ั‡ั‚ะพ ะฟะพั€ะฐ ะดะฒะธะณะฐั‚ัŒัั ะฒะฟะตั€ะตะด ะธ ั€ะตัˆะธะป, ั‡ั‚ะพ ะฑะพะปัŒัˆะต ะฝะต ะฑัƒะดัƒ ะดะตะปะฐั‚ัŒ ัั‚ะพ ะฒ ะพะดะธะฝะพั‡ะบัƒ.

    ะฏ ะฒะตั€ัŽ ะฒ ัะธะปัƒ open source ะธ ะบะพะผัŒัŽะฝะธั‚ะธ, ะฐ ั‚ะฐะบ ะถะต ะฝะฐะดะตัŽััŒ, ั‡ั‚ะพ ะตัะปะธ SwiftyVK ะบะพะผัƒ-ั‚ะพ ะฝัƒะถะตะฝ, ั‚ะพ ะพะฝ ะฟั€ะพะดะพะปะถะธั‚ ะถะธั‚ัŒ ั ัƒั‡ะฐัั‚ะธะตะผ ะฝะตะฑะตะทั€ะฐะทะปะธั‡ะฝั‹ั…, ะบั‚ะพ ะณะพั‚ะพะฒ ะฒะปะพะถะธั‚ัŒ ะฒ ะฝะตะณะพ ัะธะปั‹ ะดะปั ั‚ะพะณะพ, ั‡ั‚ะพะฑั‹ ะธัะฟะพะปัŒะทะพะฒะฐั‚ัŒ ะฒ ะดะฐะปัŒะฝะตะนัˆะตะผ.

    ะŸั€ะธ ัั‚ะพะผ ั ะฝะต ั€ะฐัั‚ะฒะพั€ััŽััŒ ะฒ ะฒะพะทะดัƒั…ะต, ะผะฝะต ะผะพะถะฝะพ ะฟะธัะฐั‚ัŒ ะฒ telegram (@west0r), ะทะฐะดะฐะฒะฐั‚ัŒ ะฒะพะฟั€ะพัั‹, ั ะฑัƒะดัƒ ั€ะฐะด ะฝะฐ ะฝะธั… ะพั‚ะฒะตั‚ะธั‚ัŒ ะธ ะฟะพะผะพั‡ัŒ ะฒัะตะผ, ั‡ั‚ะพ ะทะฝะฐัŽ. ะะพ ะฟะธัะฐั‚ัŒ ะบะพะด ะฒ ะฟั€ะพะตะบั‚ ะฑะพะปัŒัˆะต ะฝะต ะผะพะณัƒ, ั‚ะพะปัŒะบะพ ะบะพะฝััƒะปัŒั‚ะธั€ะพะฒะฐั‚ัŒ ะฟะพ ะฝะตะผัƒ. ะŸะพัั‚ะพะผัƒ ะตัะปะธ ัƒ ะฒะฐั ะตัั‚ัŒ ะฟั€ะตะดะปะพะถะตะฝะธั ะธะปะธ ะฒั‹ ะฝะฐัˆะปะธ ะพัˆะธะฑะบัƒ, ั‚ะพ ะฒะฐะผ ะฟั€ะธะดะตั‚ัั ะฝะฐะฟะธัะฐั‚ัŒ ะบะพะด ัะฐะผะพัั‚ะพัั‚ะตะปัŒะฝะพ ั ะผะพะตะน ะบะพะฝััƒะปัŒั‚ะฐั†ะธะตะน.

    ะŸะพะบะฐ ั ัะฒะปััŽััŒ ั„ะพั€ะผะฐะปัŒะฝั‹ะผ ะผะตะนะฝั‚ะตะนะฝะตั€ะพะผ, ั‚ะพ ะปัƒั‡ัˆะต ะฟะธัะฐั‚ัŒ ะผะฝะต ะดะพ ั‚ะพะณะพ, ะบะฐะบ ะฒั‹ ะดะตะปะฐะตั‚ะต pull request, ั‡ั‚ะพะฑั‹ ะผะธะฝะธะผะธะทะธั€ะพะฒะฐั‚ัŒ ั‡ะธัะปะพ ะฟั€ะฐะฒะพะบ ะฒ ัƒะถะต ะฝะฐะฟะธัะฐะฝะฝะพะผ ะบะพะดะต ะธ ะฟะพะดัƒะผะฐั‚ัŒ ะฒะผะตัั‚ะต ะบะฐะบ ะปัƒั‡ัˆะต ั€ะตะฐะปะธะทะพะฒะฐั‚ัŒ ะฒะฐัˆัƒ ะธะดะตัŽ ะฒ ะฟั€ะพะตะบั‚ะต. ะ˜ะผะตะฝะฝะพ ั ัั‚ะธะผ ั ะฒััั‡ะตัะบะธ ะณะพั‚ะพะฒ ะฟะพะผะพะณะฐั‚ัŒ ะธ ะฑัƒะดัƒ ั‚ะพะปัŒะบะพ ั€ะฐะด ั‚ะฐะบะพะผัƒ ั€ะฐะทะฒะธั‚ะธัŽ ัะพะฑั‹ั‚ะธะน.

    ะ’ ะธะดะตะฐะปะต ั ะถะดัƒ ั‡ะตะปะพะฒะตะบะฐ, ะบะพั‚ะพั€ั‹ะน ะณะพั‚ะพะฒ ะฒั‹ัั‚ัƒะฟะธั‚ัŒ ะผะตะนะฝั‚ะตะนะฝะตั€ะพะผ ะธ ะทะฐะฝัั‚ัŒัั ะฟะพะดะดะตั€ะถะบะพะน ะฟั€ะพะตะบั‚ะฐ ะฒ ะดะฐะปัŒะฝะตะนัˆะตะผ. ะ•ัะปะธ ั‚ะฐะบะพะน ะฝะฐะนะดะตั‚ัั, ั‚ะพ ั ะฝะต ะฟะพะถะฐะปะตัŽ ัะธะป, ั‡ั‚ะพะฑั‹ ะฟะตั€ะตะดะฐั‚ัŒ ะฒัะต ะทะฝะฐะฝะธั ะพ ะฝะตะผ ะธ ะฟั€ะฐะฒะฐ ะฝะฐ ั€ะตะฟะพะทะธั‚ะพั€ะธะน.

    ะ ะฟะพะบะฐ, ะบะฐะบ ะฑั‹ ะผะฝะต ะฝะต ะฑั‹ะปะพ ะถะฐะปัŒ, ั ะฟั€ะธะทะฝะฐัŽ, ั‡ั‚ะพ ะฝัƒะถะฝะพ ะดะฒะธะณะฐั‚ัŒัั ะฒะฟะตั€ะตะด. ะฏ ะดะฐะป ะฟั€ะพะตะบั‚ัƒ ะฒัะต, ั‡ั‚ะพ ะผะพะณ ะธ ะปะธะฑะพ ะพะฝ ะพะบะฐะถะตั‚ัั ะบะพะผัƒ-ั‚ะพ ะฝัƒะถะตะฝ ะธ ะดะฐะปัŒัˆะต ะทะฐะถะธะฒะตั‚ ัะฒะพะตะน ะถะธะทะฝัŒัŽ, ะปะธะฑะพ ะฝะตั‚ ะธ ะทะฐั€ะพัั‚ะตั‚ ะฟะปะตัะตะฝัŒัŽ. ะขะตะฟะตั€ัŒ ะตะณะพ ััƒะดัŒะฑะฐ ะฒ ั€ัƒะบะฐั… ะบะพะผัŒัŽะฝะธั‚ะธ.

    opened by west0r 0
Releases(3.4.2)
Owner
null
An easy-to-use Objective-C wrapper for the Uber API (no longer supported)

UberKit UberKit is a simple Objective-C wrapper for the new Uber API . Installation Cocoapods UberKit is available through Cocoapods. To install it, s

Sachin Kesiraju 95 Jun 30, 2022
An Elegant Spotify Web API Library Written in Swift for iOS and macOS

Written in Swift 4.2 Spartan is a lightweight, elegant, and easy to use Spotify Web API wrapper library for iOS and macOS written in Swift 3. Under th

Dalton Hinterscher 107 Nov 8, 2022
The Swift-est way to build native mobile apps that connect to Salesforce.

Swiftly Salesforce is the Swift-est way to build native mobile apps that connect to Salesforce: Written entirely in Swift. Very easy to install and up

Michael Epstein 131 Nov 23, 2022
Unofficial Dribbble iOS wrapper allows you to integrate Dribble API into iOS application (Designer, Shot, Comment, User Story, Like, Follow)

DribbbleSDK DribbbleSDK is easy-to-use iOS wrapper for Dribbble SDK. We're working hard to complete the full coverage of available methods and make th

Agilie Team 74 Dec 2, 2020
A Swift wrapper for Foursquare API. iOS and OSX.

Das Quadrat Das Quadrat is Foursquare API wrapper written in Swift. Features Supports iOS and OSX. Covers all API endpoints. Authorization process imp

Constantine Fry 171 Jun 18, 2022
Giphy API client for iOS in Objective-C

Giphy-iOS Giphy-iOS is a Giphy API client for iOS in Objective-C. Usage To run the example project, clone the repo, and run pod install from the Examp

alex choi 52 Jul 11, 2019
Easy Proximity-based Bluetooth LE Sharing for iOS

Description Easy Proximity-based Sharing for iOS Perfect for any iOS app that needs to quickly share items with nearby friends, such as groups, photo

Laura Skelton 132 Aug 10, 2022
A stable, mature and comprehensive Objective-C library for Twitter REST API 1.1

STTwitter A stable, mature and comprehensive Objective-C library for Twitter REST API 1.1 Like a FOSS version of Twitter Fabric TwitterKit, without th

Nicolas Seriot 1k Nov 30, 2022
Twitter API for Cocoa developers

FHSTwitterEngine Twitter API for Cocoa developers Created by Nathaniel Symer FHSTwitterEngine can: Authenticate using OAuth and/or xAuth. Make a reque

Nathaniel Symer 213 Jul 8, 2022
ObjectiveFlickr, a Flickr API framework for Objective-C

ObjectiveFlickr ObjectiveFlickr is a Flickr API framework designed for Mac and iPhone apps. OAuth Support ObjectiveFlickr now supports Flickr's new OA

Lukhnos Liu 714 Jan 9, 2023
Unofficial GitHub API client in Swift

Github.swift โค๏ธ Support my apps โค๏ธ Push Hero - pure Swift native macOS application to test push notifications PastePal - Pasteboard, note and shortcut

Khoa 184 Nov 25, 2022
Unified API Library for: Cloud Storage, Social Log-In, Social Interaction, Payment, Email, SMS, POIs, Video & Messaging.

Unified API Library for: Cloud Storage, Social Log-In, Social Interaction, Payment, Email, SMS, POIs, Video & Messaging. Included services are Dropbox, Google Drive, OneDrive, OneDrive for Business, Box, Egnyte, PayPal, Stripe, Google Places, Foursquare, Yelp, YouTube, Vimeo, Twitch, Facebook Messenger, Telegram, Line, Viber, Facebook, GitHub, Google+, LinkedIn, Slack, Twitter, Windows Live, Yahoo, Mailjet, Sendgrid, Twilio, Nexmo, Twizo.

CloudRail 195 Nov 29, 2021
A swift SDK for Medium's OAuth2 API

Medium SDK - Swift A library to allow access to Medium API for any Swift iOS application. Features Medium.com authorization & token handling Login sta

null 11 Jan 22, 2022
Swift Wrapper For Bittrex API

BittrexApiKit Swift client for Bittrex api. It support all APIs with most recent changes. more info here let api = Bittrex(apikey: "api key", secretke

Saeid 8 Apr 5, 2021
Instagram API client written in Swift

SwiftInstagram is a wrapper for the Instagram API written in Swift. It allows you to authenticate users and request data from Instagram effortlessly.

Ander Goig 579 Dec 31, 2022
A Slack API Client for the Perfect Server-Side Swift Framework

PerfectSlackAPIClient is an API Client to access the Slack API from your Perfect Server Side Swift application. It is build on top of PerfectAPIClient

Cap.้›ชใƒŽไธ‹ๅ…ซๅนก 2 Dec 1, 2019
An API wrapper for bitFlyer.

SwiftFlyer An API wrapper for bitFlyer that supports all providing API. API Document https://lightning.bitflyer.jp/docs Usage Public API Fetch a marke

Ryo Ishikawa 39 Nov 3, 2022
A Swift library for the Forecast.io Dark Sky API

Requirements To use ForecastIO, all you need is an API key for the Dark Sky API. ForecastIO supports iOS (โ‰ฅ9.0), macOS (โ‰ฅ10.10), watchOS (โ‰ฅ2.0), and t

Satyam Ghodasara 163 Jul 26, 2022
A clima based app with use of API

Clima Our Goal Itโ€™s time to take our app development skills to the next level. Weโ€™re going to introduce you to the wonderful world of Application Prog

null 0 Nov 28, 2021