Ошибка при загрузке файла в вк айфон
Обновлено: 21.11.2024
Библиотека для работы с VK API, авторизации через приложение VK, методами VK API. Поддерживается iOS от 8.0 Подготовка к использованию VK SDK
Чтобы использовать VK SDK, в первую очередь вам нужно создать новое автономное приложение VK здесь. Выберите название и подтвердите действие по SMS, и вы будете перенаправлены на страницу настроек приложения. Для использования библиотеки вам понадобится ваш APP_ID. Заполните поле App Bundle для iOS.
Настроить URL-схему вашего приложения
Для авторизации через приложение ВКонтакте вам необходимо настроить url-схему для вашего приложения, которая имеет вид vk+APP_ID (например, vk1234567).
Настройка приложения для iOS 9
Кроме того, для iOS 9 вам необходимо добавить схемы приложений, которые будет использовать ваше приложение, и проверить наличие canOpenURL: .
Добавьте это в свой Info.plist:
Как настроить VK iOS SDK
Установка с помощью CocoaPods
CocoaPods — это менеджер зависимостей для Objective-C, который автоматизирует и упрощает процесс использования сторонних библиотек, таких как VK SDK, в ваших проектах. Дополнительные сведения см. в руководстве по началу работы.
Затем импортируйте проект как модуль, если ваш подфайл содержит use_frameworks! директива:
Или импортируйте заголовок основного проекта, если вы устанавливаете модули без использования use_frameworks! директива:
Только для iOS 8 и более поздних версий
Добавьте это в свою корзину:
См. инструкции по сборке Карфагена здесь
Затем импортируйте основной заголовок.
Установка с фреймворком
Если вы ориентируетесь на iOS 8 и более поздние версии, вы можете использовать целевую платформу SDK. Добавьте VK-ios-sdk.xcodeproj в качестве подпроекта в свой проект. Откройте свой проект в Xcode -> Перейдите на вкладку «Общие» -> Найдите раздел «Встроенные двоичные файлы» -> Нажмите «Добавить элементы» (знак «плюс») -> И выберите VKSdkFramework.framework из проекта VK-ios-sdk, наконец, импортируйте основной заголовок: р>
- Поместите этот код в метод делегата приложения
Примечание: если вы уже добавили FaceBook SDK и один из этих методов возвращает [FBSDKDelegate . ] ты справишься
- Инициализировать VK SDK с вашим APP_ID для любого делегата.
Начиная с версии 1.3 доступно два типа делегатов: общий делегат и делегат пользовательского интерфейса. Вы можете зарегистрировать столько общих делегатов, сколько вам нужно, но делегат пользовательского интерфейса может быть только один. После инициализации SDK необходимо зарегистрировать делегатов отдельно:
Вы найдете полное описание протоколов VKSdkDelegate и VKSdkUIDelegate здесь или здесь
- Вам нужно проверить, доступен ли предыдущий сеанс, поэтому вызовите асинхронный метод wakeUpSession:completeBlock:
Вы найдете полный список доступных разрешений SCOPE здесь
Проверьте параметр VKAuthorizationState. Вы можете получить несколько состояний:
- VKAuthorizationInitialized — означает, что SDK готов к работе, и вы можете авторизовать пользователя методом +authorize:. Возможно, срок действия старой сессии истек, и мы ее стерли. Это не ошибка.
- VKAuthorizationAuthorized — означает, что с предыдущим сеансом все в порядке, и вы можете продолжить работу с данными пользователя.
- VKAuthorizationError - означает, что произошла ошибка, когда мы пытались проверить авторизацию. Возможно, интернет-соединение плохого качества. Вам придется повторить попытку позже.
Если у вас еще нет сеанса, вам необходимо авторизовать пользователя следующим способом:
Вы должны соответствовать протоколам VKSdkDelegate и VKSdkUIDelegate, чтобы вызывать соответствующие методы.
После авторизации все общие делегаты будут вызываться следующим методом:
VKAuthorizationResult содержит некоторую исходную информацию: новый объект токена доступа, основную информацию о пользователе и ошибку (если авторизация не удалась). Полная документация здесь
Синтаксис запроса VK API
Ниже мы привели несколько примеров для нескольких типов запросов.
- Запрос с заданным максимальным количеством попыток.
Потребуется 10 попыток, прежде чем возникнет ошибка API.
- Запрос, загружающий фото на стену пользователя
SDK может обрабатывать некоторые ошибки (например, ошибку проверки по слову, ошибку проверки). Для этой цели будет вызван соответствующий метод делегата пользовательского интерфейса. Ниже приведен пример обработки ошибки капчи:
Пакетная обработка запросов
SDK позволяет выполнять несколько несвязанных запросов за один вызов (пакетный запрос).
- Результат каждого метода возвращается в соответствующий полный блок. Массив ответов содержит результаты запросов в том порядке, в котором они были переданы.
Работа с диалоговым окном «Поделиться»
Диалоговое окно «Поделиться» позволяет создать удобный диалог для обмена текстом и фотографиями из вашего приложения непосредственно в ВКонтакте. См. пример использования диалогового окна «Поделиться»:
Создайте экземпляр диалогового контроллера как обычно
Прикрепите текстовую информацию к диалоговому окну.Обратите внимание, что пользователи могут изменять эту информацию
Прикрепите изображения, загруженные ранее в ВК. Если вы хотите, чтобы пользователь загружал новое изображение, используйте свойство uploadImages
Прикрепить ссылку на свои страницы
Установите обработчик завершения диалога
Представить контроллер диалогового окна вашему контроллеру представления
Работа с общим доступом
VK SDK предоставляет специальный класс для работы с UIActivityViewController — VKActivity.
Обратите внимание, что приложение ВКонтакте имеет собственное расширение Share, начиная с версии 2.4. Начиная с версии 2.5, он будет поддерживать специальную схему URL для проверки доступности расширения Share. Вы должны вызвать метод [VKActivity vkShareExtensionEnabled], чтобы удалить VKActivity из списка действий, если доступно расширение ВКонтакте.
Посмотрите пример ниже, чтобы понять, как это работает:
Давайте рассмотрим пример шаг за шагом
Подготовьте информацию об общем доступе — UIImage , NSString и NSURL . Такая информация может быть передана через ВКонтакте.
Подготовить UIActivityViewController с новым приложением VKActivity
Установите дополнительные свойства для ActivityViewController
Установить обработчик завершения для ActivityViewController
Проверьте, используете ли вы iOS 8 или более позднюю версию. Если пользователь использует iPad, вы должны представить контроллер активности во всплывающем окне, иначе вы получите системную ошибку
Представить контроллер активности как обычно
О нас
iOS-библиотека для работы с VK API, авторизация через приложение VK, использование функций VK
Простой и мощный способ взаимодействия с VK API для iOS и macOS.
😊 Это не ios-vk-sdk 😊
🍏 Одна библиотека для iOS и mac OS 🍏
🤘 Полностью написана на Swift и не содержит кода на Objective-C 🤘
🎮 Очень простой интерфейс, сделанный с заботой о тех, кто будет им пользоваться 🎮
⛑ Полностью типизированный, что не прострелишь себе ногу ⛑
🏆 Высокое качество кода с большим количеством юнит-тестов, интеграцией линтера и CI 🏆
🚀 Частые обновления и исправления ошибок 🚀
🔊 Поддержка LongPoll 🔊
Оглавление
Требования
- Свифт 4.0+
- iOS 8.0+
- macOS 10.10+
- Xcode 9.0+
Интеграция
- Просто перетащите SwiftyVK.framework или включите в проект весь SwiftyVK.xcodeproj
- Связать SwiftyVK.framework с приложением в настройках цели -> Общие -> Встроенные двоичные файлы.
Начало работы
Чтобы начать использовать SwiftyVK, вы должны реализовать протокол SwiftyVKDelegate в своем пользовательском классе VKDelegate. Он используется для уведомления вашего приложения о важных событиях жизненного цикла SwiftyVK.
Полную реализацию см. в примере проекта
Настройка приложения ВКонтакте
чтобы высвободить ресурсы, удерживающие использование SwiftyVK:
обратите внимание, что вы должны настроить его снова для дальнейшего использования
Авторизация
SwiftyVK предоставляет несколько способов авторизации пользователя. Выберите тот, который больше подходит вам.
Это стандартный метод авторизации, который показывает веб-представление с диалоговым окном oAuth. Подходит для большинства случаев.
Официальное приложение ВКонтакте
Если на устройстве пользователя установлено официальное приложение ВКонтакте, SwiftyVK может авторизоваться с его помощью. Для этого:
В Xcode -> Цель -> Информация -> Типы URL
- Добавить новый тип URL, например vk$YOUR_APP_ID$ (например, vk1234567890)
- Добавить схемы приложений в файл Info.plist:
Скопируйте пакет приложения из Xcode -> $App Target$ -> General -> Bundle Identifier (например, com.developer.applicationName)
Добавьте следующий код в AppDelegate:
Авторизируйтесь, как описано в oAuth WebView.
Если пользователь откажет в авторизации в приложении ВКонтакте, SwiftyVK представит диалоговое окно oAuth
Необработанная строка токена
Если вы уже получили токен пользователя, просто передайте его следующему методу:
TimeInterval — это время, по истечении которого токен перестает быть действительным. Передайте 0, если вы хотите, чтобы токен никогда не истекал.
Взаимодействие с VK API
SwiftyVK предоставляет очень простой интерфейс для взаимодействия с VK API. Все запросы выполняются асинхронно в приватной очереди планировщиком API (по умолчанию планировщик отправляет не более 3 запросов в секунду). Вы можете просто отправить запрос и получить ответ без особых усилий.
Здесь перечислены все методы API
Давайте рассмотрим синтаксис запросов:
Основные вызовы запроса выглядят как VK.methodGroup.methodName().
Объект создан с помощью
представляет собой запрос, который может быть отправлен немедленно или может быть сначала настроен, а отправлен позже.
Если вы хотите получить дополнительные поля для пользователя из предыдущего примера, вы можете задать параметры запроса:
Используйте .empty, если вы не хотите передавать какие-либо параметры.
Запросы выполняются асинхронно и предоставляют некоторые обратные вызовы для обработки результатов выполнения:
Этот обратный вызов будет вызван, когда запрос будет выполнен успешно и вернет объект данных. Вы можете обрабатывать и анализировать ответ, используя любой метод анализа JSON (например, JSONSerialization , Codable , SwiftyJSON и другие)
Вы можете выдавать ошибки в обратном вызове onSuccess, что приведет к вызову onError с вашей ошибкой.
Этот обратный вызов будет вызван, если запрос по какой-то причине не удался. Вы можете обработать ошибку, возникшую в этом обратном вызове.
Если вам больше не нужно отправлять запланированный запрос (например, экран выскочил), просто отмените его:
SwiftyVK позволяет объединять запросы. Если ваш второй запрос должен получить ответ от первого, просто соедините их вместе:
Со SwiftyVK можно создавать очень длинные цепочки!
Настройка
Вы можете изменить конфигурацию для одного запроса
или за весь сеанс
Вы можете изменить следующие свойства конфигурации:
Свойство | По умолчанию | Описание |
---|---|---|
httpMethod | .GET | метод HTTP. Вы можете использовать GET или POST. Для большого тела (например, длинного текста сообщения в методе message.send) используйте метод POST. |
apiVersion | последняя версия | Версия API ВКонтакте. По умолчанию используется последняя версия. Если вам нужна другая версия - измените это значение. |
language | Язык системы пользователя | Язык ответа. Для EN Павел Дуров , для RU Павел Дуров . |
attemptsMaxLimit | 3 | Максимальное количество попыток отправки запроса до возврата ошибки. |
attemptTimeout | 10 | Тайм-аут в секундах ожидания ответа перед возвратом ошибки. |
handleErrors | true | Разрешить автоматически обрабатывать определенные ошибки ВКонтакте, представляя пользователю диалоговое окно, когда требуется авторизация, разгадывание капчи или проверка. |
SwiftyVK позволяет легко загружать файлы на серверы ВКонтакте. Например:
Некоторые запросы на загрузку не загружают файлы сразу
Например, VK.API.Upload.Photo.toMessage вернет photoId, который вы можете использовать в методе messages.send. Дополнительные сведения см. в документации.
Взаимодействие с LongPoll
С SwiftyVK вы можете очень легко взаимодействовать с сервером VK LongPoll. Просто позвоните:
Формат данных описан здесь. LongPollEvent — это перечисление со связанным значением типа Data в каждом случае. Вы можете преобразовать эти данные в формат JSON с помощью своего любимого парсера следующим образом:
LongPollEvent имеет два особых случая:
.forcedStop — возвращается, когда LongPoll испытывает непредвиденную ошибку и останавливается. Вы можете перезапустить его снова.
.historyMayBeLost — возвращается, когда LongPoll был отключен от сервера в течение длительного времени и либо lpKey, либо временная метка устарели. Вам не нужно переподключать LongPoll вручную, клиент сделает это сам. Используйте этот случай, чтобы обновить данные, которые могли быть обновлены, когда сеть была недоступна.
Если вам больше не нужно получать обновления LongPoll, просто вызовите эту функцию:
Диалоговое окно "Поделиться"
С помощью SwiftyVK можно публиковать сообщения на стене пользователя. Для этого вам нужно:
Изображения и ссылка необязательны, требуется текст Общий доступ недоступен в macOS 10.10. Если вы хотите использовать его, отправьте запрос на включение в этот репозиторий.
Почему видео в вк не работают и пишет, что видео не загружено?
Говорит: видео не загружено
Нам нужна ваша помощь! Пожалуйста, помогите нам улучшить наш контент, удалив вопросы, которые по сути одинаковы, и объединив их в этот вопрос. Пожалуйста, сообщите нам, какие вопросы ниже похожи на этот: Таблица лидеров Что это?
|