VKCOM / vk-ios-sdk

iOS library for working with VK API, authorization through VK app, using VK functions
MIT License
296 stars 167 forks source link

Проблема с Share #219

Closed AndreyPanov closed 8 years ago

AndreyPanov commented 9 years ago

Коллеги, добрый день! Сейчас постараюсь подробно описать, что я делаю и какие проблемы возникают. Задача Дать возможность из приложения под iPad шарить картинку+текст+ссылку. Если установлено ВК приложение, то приложение авторизуется через него, если нет, то через Safari.

Как стартовое условие я интегрировал готовый фреймворк и VKSdkResources.bundle В AppDelegate прописал [VKSdk processOpenURL:url fromApplication:sourceApplication]; в методе

Инициализирую [VKSdk initializeWithDelegate:self andAppId:@"4831304"]; if ([VKSdk wakeUpSession]) { [self startWorking]; } else { [VKSdk authorize:SCOPE revokeAccess:YES]; }

Для постинга в начале загружаю картинку в ВК, после вызываю контроллер:

Вот такие методы делегата:

Теперь привожу список проблем:

  1. если на iPad не установлено приложение ВК, то при первом вызове контроллера ничего не происходит. Чтобы перекинуло в браузер для авторизации приложения кнопку share нужно нажать 2 раза. Почему [VKSdk authorize:SCOPE revokeAccess:YES]; не срабатывает сразу при отсутствии ВК app? После перехода в браузер приложение просит те права, которые я указал в scope.
  2. если приложение ВК установлено, то в него перекидывает после первого нажатия, НО просит право только на просмотр профиля. Логично, что после возврата в мое приложение прилетает ошибка "Доступ запрещен". Почему разная логика при использовании Safari и ВК app?
  3. после появления модального окна висит бесконечная крутилка вместо загруженной картинки. После публикации и просмотра записи на стене картинка есть. То есть проблема именно в подгрузке ее в модальное окно через VKRequest.
  4. в туторе и семпле кода указано, что для фото нужно использовать вот такой формат строки: NSString *photoAttachment = [NSString stringWithFormat:@"photo%@_%@", photoInfo.owner_id, photoInfo.id]; На самом деле нужно без "photo".

Прокомментируйте, пожалуйста. Заранее спасибо.

AndreyPanov commented 9 years ago

По запросу могу .m файл скинуть для лучшей читабельности кода.

RomanTruba commented 9 years ago

1) Что за кнопка share? 2) На iPad с последними обновлениями почему-то сломались параметры. Ждём, пока пропустят обновление клиента. 3) ShareDialog не будет работать, пока нет доступа к photos (см. второй пункт). 4) В семпле работает правильно @[@"-10889156_348122347",@"7840938_319411365",@"-60479154_333497085"] Где указано неправильно?

driver733 commented 9 years ago

@Dreddik Подтверждаю проблему номер 1. Код ниже привязан к UIButton. Если нажать кнопку один раз, то выведется "Invalid user id". Дальше кнопка работает нормально (VKRequest выполняется успешно). Кстати, можно ли как-то пофиксить выскакивающий и сразу же исчезающий view controller с авторизацией(когда выполняется VKAuthorize)? Может, я что-то упускаю? VKSdk.initializeWithDelegate(self, andAppId: "1234567") let scope = NSMutableArray() scope.addObject("friends,profile info,offline,wall") VKSdk.authorize(scope as [AnyObject]) let audioReq: VKRequest = VKApi.users().get() audioReq.executeWithResultBlock({ response in let json = JSON(response.json) self.testLoginLabel.text = json[0]["first_name"].string! + " " + json[0]["last_name"].string! for (key, subJson) in json[0] { if let title = subJson[key].string { println(title) } }