Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

npm-плагин для Phonegap Build #13

Open
Ajaxy opened this issue Feb 3, 2016 · 12 comments
Open

npm-плагин для Phonegap Build #13

Ajaxy opened this issue Feb 3, 2016 · 12 comments

Comments

@Ajaxy
Copy link

Ajaxy commented Feb 3, 2016

Привет.
Хочу попробовать использовать плагин при сборке в облаке через Phonegap Build.
Форкнул, поправил имя, версию и запушил в npm: https://github.com/Ajaxy/cordova-plugin-socialvk

При сборке в логах вылетают такие ошибки:

In file included from /project/Mozg/Plugins/cordova-plugin-socialvk/SocialVk.m:4:
Mozg/Plugins/cordova-plugin-socialvk/SocialVk.h:5:9: fatal error: 'VKSdk/VKSdk.h' file not found
#import <VKSdk/VKSdk.h>
        ^
1 error generated.

Видимо как-то неправильно устанавливается VKSdk.framework. Аналогичный плагин для фейсбука https://github.com/Wizcorp/phonegap-facebook-plugin/blob/master/plugin.xml работает нормально.

Есть ли идеи, в чём может быть проблема?
Спасибо.

@Ajaxy
Copy link
Author

Ajaxy commented Feb 3, 2016

Возможно причина в том, что нужно вручную указать все зависимости для используемого фреймворка, как сделано тут:
https://github.com/Wizcorp/phonegap-facebook-plugin/blob/master/plugin.xml#L107
Не подскажете, какой список должен быть для вашего плагина?

@DrMoriarty
Copy link
Contributor

Нет, дело не в зависимостях от стандартных фреймворков. В этом случае была бы совсем другая ошибка.
А вот ошибка с тем, что иногда кордова не добавляет в файл проекта зависимость на VKSdk.framework действительно существует. И эта проблема проявляется безотносительно phonegap build, то есть при локальной сборке её тоже можно схватить.
Только вот локально с её последствиями легко справиться (просто добавить фреймворк в список зависимостей) а вот что делать на build сервере я даже не представляю.

@DrMoriarty
Copy link
Contributor

Вот это решение не помогает случайно?
#9

@Ajaxy
Copy link
Author

Ajaxy commented Feb 3, 2016

Спасибо за быстрый ответ.

Кажется, проблема действительно связана с ссылками, их неправильно обрабатывает npm. В плагине для фейсбука была та же проблема: https://github.com/Wizcorp/phonegap-facebook-plugin#-----cordova-registry-warning-ios

Можно ли как-то изменить структуру директорий, чтобы избежать наличия ссылок?

@Ajaxy
Copy link
Author

Ajaxy commented Feb 3, 2016

Может быть вот этот комментарий как-то может помочь? Wizcorp/phonegap-facebook-plugin#624 (comment)

@DrMoriarty
Copy link
Contributor

Возможно простое разыменование ссылок даст нужный эффект. (в mc при копировании есть такой флажок)
Если что, push request приветствуется.

Ajaxy added a commit to Ajaxy/cordova-plugin-socialvk that referenced this issue Feb 4, 2016
@Ajaxy
Copy link
Author

Ajaxy commented Feb 4, 2016

Да, простое перемещение ссылок помогло:

rm src/ios/VKSdk.framework/Headers src/ios/VKSdk.framework/VKSdk
mv src/ios/VKSdk.framework/Versions/Current/* src/ios/VKSdk.framework/
rm -rf src/ios/VKSdk.framework/Versions

@Ajaxy
Copy link
Author

Ajaxy commented Feb 4, 2016

Правда возникла еще одна проблема. Я установил на свой телефон официальное приложение вконтакте, но плагин всё равно открывает WebView с формой логина и пароля от ВК. Не знаете, с чем может быть связано?

Авторизация через приложение по сути ключевой момент, иначе всю авторизацию и работу можно было бы реализовать через InAppBrowser и JS SDK.

@DrMoriarty
Copy link
Contributor

А в приложении настроены схемы URL и всё такое? (они обычно подключаются плагином автоматически, но могут быть накладки)
Конкретно решение о логине через приложение или вебвью производится внутри src/ios/SocialVk.m
метод -(void)vkLoginWithPermissions:
Можно там брейкпоинт поставить и проверить, какой флаг выставляется для СДК.

@Ajaxy
Copy link
Author

Ajaxy commented Feb 5, 2016

В приложении настроена URL-схема, но, кажется, это не должно влиять на выбор типа авторизации.

На самом деле неверно отрабатывает метод [[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:VK_AUTHORIZE_URL_STRING]], причем как в вашем коде, так и в коде VKSdk: даже если тут задать переменную inApp = NO, VKSdk открывает Safari, а не VK App, так как такая же проверка в их коде не выполняется.

@Ajaxy
Copy link
Author

Ajaxy commented Feb 5, 2016

Ура, разобрался. Для iOS 9 надо было добавить

<key>LSApplicationQueriesSchemes</key>
<array>
    <string>vk</string>
    <string>vk-share</string>
    <string>vkauthorize</string>
</array>

https://github.com/VKCOM/vk-ios-sdk#using-sdk

@IYABAO
Copy link

IYABAO commented Sep 11, 2016

@Ajaxy @DrMoriarty the same error
fatal error: 'VKSdk/VKSdk.h' file not found #import <VKSdk/VKSdk.h> ^ 1 error generated.

how to fix it anyway?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants