Страницы

Поиск по вопросам

Показаны сообщения с ярлыком iphone. Показать все сообщения
Показаны сообщения с ярлыком iphone. Показать все сообщения

вторник, 25 февраля 2020 г.

Нужна ли обратная связь в мобильном приложении?

#android #windows_phone_7 #ios #iphone


Доброго времени суток, Господа!
Только что поучаствовал в споре — «а нужна ли обратная связь в мобильном приложении?»
Я с читаю что нужна, потому что когда я пользуюсь приложениями, иногда возникает
необходимость сообщить о каком то баге, неудобстве или еще о чем-нибудь, но очень редко
встречается, что приложение имеет такую функцию, а идти на маркет, искать это приложение
и писать туда отзыв, не очень приятное занятие(я ленивый). Так вот, может у кого-то
был уже подобный опыт или кто-то сталкивался с таким вопросом и к чему это привело,
поделитесь пожалуйста. 
Какие аргументы мне привели против:
— слишком навязчиво получается, если по-твоему… Ты с хабра! Ты учить будешь! А мне
не надо ниче.
PS: моя идея реализации такова: текстбокс и кнопка отправить, никаких пользовательских
данных передаваться не будет.    


Ответы

Ответ 1



С одной стороны фидбек, особенно быстрый, всегда важен, с другой стороны на почту с большой долей вероятности -будет сыпаться много спама, который придётся фильтровать, но думаю будут и полезные письма. Мой выбор - такая форма нужна, но находится она должна, где-то в настройках.

Ответ 2



Не знаю как там насчет WP7 и iOS, но в Android: Возможность фидбека при падении приложения по умолчанию встроена в Android, при согласии юзера крэш репорт отсылается разработчику Для Android существует огромное количество либ/инструментов для организации обратной связи - в основном они используются для маркетинга, выдачи рекламных баннеров (в зависимости от страны, аппарата, сети и проч.) - бессмысленно их перечислять, достаточно погуглить Google недавно запустил сервис Google Cloud Messaging, который позволяет пересылать девелоперу сообщения в свою аппу В общем и целом в сумме, рынок движется в сторону интенсификации связи приложение <-> девелопер. Так что считаю, это нужная и полезная штука.

Ответ 3



Сейчас работаю над IOS приложением где на каждом контроллере маленькая кнопка инфо в углу. По нажатию открывается форма обратной связи с разработчиками. Это было требованием по тз и я считаю это абсолютно верным, так как Вы как разработчик получаете возможность быстрого и вероятно всеобъемлющего тестирования ресурсами других людей, и возможность быстро залатать баги или протестить функционал при внедрении обновления например. Плюс меньше будет негативных отзывов в аппсторе если все же будут баги. А чтобы ненавязчиво было - подключайте UI дизайнера. И все будет отлично

Ответ 4



ИМХО, возможность фидбека была бы не плохой, однако любые отчеты об ошибках должны отправляться в автоматическом режиме, либо с разрешения пользователя(для экономии трафика). Также хочу уточнить пользовательские данные ДОЛЖНЫ отправляться. Будь то id телефона или же уникальный id для копии приложения. Как минимум это должно быть реализовано для банально защиты от флуда в фидбек и соответственно реализованы механизмы его предотвращения на сервере и возможно в приложении. Так же я считаю что фидбек не должен находится на видном месте и мозолить глаза пользователя. Лучшим вариантом запрятать эту функцию куда нибудь в настройки или же в информацию о ПО. Возможно даже лучшим вариантом было бы простая ссылка на очень легкую страницу для фидбека. Повторяю все вышеописанное - мое мнение и не претендует на истину.

суббота, 8 февраля 2020 г.

Как в Objective-C изменить стандартный переход в Storyboard из одной сцены к другой

#ipad #objective_c #ios #iphone


В моем проекте пока стоит стандартный переход от сцены к сцене при push. 
А мне задумалось сделать что-то поинтереснее.
Как это можно реализовать?
У меня в основе стоит Navigation Controller.
И кстати когда я пытался сделать переход типа modal - симулятор прекращал работу
приложения.
Ну и хочется сделать что-то поинтереснее чем четыре модальных варианта.
Заранее благодарен за помощь )    


Ответы

Ответ 1



Вот вам история в картинках: 1) Начинаете с того, что добавляете новый класс: 2) Делаете его подклассом UIStoryboardSegue, называете его, как хотите: 3) Добавляете в получившийся .m-метод метод perform: #import "CustomSegue.h" #import @implementation CustomSegue - (void)perform { UIViewController *sourceViewController = (UIViewController *)[self sourceViewController]; UIViewController *destinationController = (UIViewController *)[self destinationViewController]; CATransition* transition = [CATransition animation]; transition.duration = .25; transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]; transition.type = kCATransitionPush; //kCATransitionMoveIn; //, kCATransitionPush, kCATransitionReveal, kCATransitionFade transition.subtype = kCATransitionFromTop; //kCATransitionFromLeft, kCATransitionFromRight, kCATransitionFromTop, kCATransitionFromBottom [sourceViewController.navigationController.view.layer addAnimation:transition forKey:kCATransition]; [sourceViewController.navigationController pushViewController:destinationController animated:NO]; } @end 4) Идете в Storyboard. Удерживая Control, тянете от одного контроллера к другому мышь - отпускаете, выбираете custom: 5) Указываете в свойствах этой Segue, что её класс - CustomSegue. 6) Добавляете в проект фреймворк QuartzCore (если он ещё не добавлен). 7) Пробуете разные способы анимации через изменение опций в методе perform. Удачи!

Возможна ли локализация UI элементов в Xcode iOS?

#xcode #ios #iphone #objective_c


Возможно ли наитивным образом поставить, чтобы надпись в searcBar для отмены была
не "cancel", а "отмена", в TableView при commitEditingStyle были надписи в строках
не "Delete", а "Удалить". Это вообще возможно как то прописать в настройках среды,
или где еще, или только самому прописывать можно? В симуляторе стоит в настройках русский
язык. Искал в сети на обоих языках - нашел информацию только что для подобных элементов
язык сам должен правильный выставляться, но в моем случае этого не происходит. Работаю
в Xcode 5, iOS 7 SDK. 
Для SearchBar пробовал этот способ:
 [[UIButton appearanceWhenContainedIn:[UISearchBar class], nil] 
                                         setTitle:@"Отмена" 
                                         forState:UIControlStateNormal];

Не помогло.    


Ответы

Ответ 1



Конечно возможно, все базовые вещи переводятся автоматом, если вы включаете поддержку других языков в своем проекте. Все остальные строки локализуются либо через NSLocalizedString либо через Base Internationalization в Storyboard. Все строки в сториборде могут быть локализованы, делается это также при добавлении Base в список Languages (у вашей сториборды появляются локализованные варианты). В UISearchBar кнопка будет локализована автоматическии, если вы добавите язык в Проект (вверху слева в дереве навигации по проекту) -> далее следует выбрать проект (не target) -> вкладка Info -> раздел Localizations - список языков. Чтобы локализовывать свои UI элементы - self.label.text = NSLocalizedString(@"Sting to be localized", @"comment for translator"); вот хороший туториал по локализации (теперь на русском): http://www.raywenderlich.com/ru/36227/Локализация-приложений-в-ios а по сторибордам там вроде и так все предельно ясно будет, единственное, autolayout должен быть включен

воскресенье, 26 января 2020 г.

Как на iOS реализовать работу с WebSocket?

#objective_c #ios #iphone


Всем добрый вечер. Мой вопрос: Мне необходимо сконектится с WebSocket на iPhone(X-Studio).
На сегодня сервер работает как эхо, то есть возвращает посланное, и мне бы хотелось
проверить это через мое iOS приложение. Я прочел пару статей на эту тему, но пока ничего
не получилось! Так вот чтобы открыть соединение с сокетом на JavaScript это делается
так new Websocket('ws://ofs.ft-ru.ru:8080'). Как мне это сделать на iOS, и при этом
отправить и получить что нибудь? Заранее спасибо!    


Ответы

Ответ 1



Попробуйте эту библиотеку SocketRocket

пятница, 10 января 2020 г.

Медиа запросы для iPhone

#css #ios #iphone #media_queries


Не могу заставить работать вёрстку на айфонах так, как требуется.

На всех остальных девайсах всё работает как мне нужно.

Пробовал разные варианты, некоторые из них:  

@media (device-height : 568px) 
   and (device-width : 320px) 
   and (-webkit-min-device-pixel-ratio: 2)

@media
    only screen and (max-device-width: 1136px) and (min-device-width: 960px) and
(max-device-height: 640px) and (min-device-height: 560px),
    only screen and (max-device-height: 1136px) and (min-device-height: 960px) and
(max-device-width: 640px) and (min-device-width: 560px) {
    /* iPhone only */
}

@media only screen 
    and (max-device-width: 640px), 
    only screen and (max-device-width: 667px), 
    only screen and (max-width: 480px)
{ }


Но ничего не помогло.
Сейчас я использую такие media queries(для iPhone они всёравно не работают):

@media screen and (max-width: 420px), only screen and (max-device-width: 667px) and
(-webkit-device-pixel-ratio: 2), screen and (min-device-width : 414px) and (max-device-height
: 736px) and (max-resolution: 401dpi)
    .l-wrapper
        flex-direction: column
        .l-item
            width: 100%

    .projects
        figure.project
            width: 100%
            margin-right: 0

    .edu-places
        .edu-place
            span
                &.period
                    padding-top: 3em

                    &:before
                        top: 3em
    .h-wrapper
        flex-direction: column
        align-items: center

@media screen and (max-width: 768px), only screen and (max-device-width: 667px) and
(-webkit-device-pixel-ratio: 2), screen and (min-device-width : 414px) and (max-device-height
: 736px) and (max-resolution: 401dpi)
    #wrapper
        flex-direction: column

    #header
        flex: 1

    #main
        flex: 1


Подскажите, что ещё попробовать? Может я что-то неверно делаю? Нужна помощь и советы.

UPDATE:
На iPhone желаю получить такой же результат как на скриншоте Android

iPhone на данный момент, скриншот одинаков для iPhone6,6+,5,5S

    


Ответы

Ответ 1



У вас слишком жесткие критерии для Media Queries, плюс нет вендорных префиксов для того же определения плотности пикселей. Например вот так: @media only screen and (-webkit-min-device-pixel-ratio: 2), only screen and ( min--moz-device-pixel-ratio: 2), only screen and ( -o-min-device-pixel-ratio: 2/1), only screen and ( min-device-pixel-ratio: 2), only screen and ( min-resolution: 192dpi), only screen and ( min-resolution: 2dppx) { Ваши свойства } Определение плотности пикселей требуется в том случае, если вам необходимо добавить картинки большего разрешения, в остальных случаях нет смысла это использовать. Посмотреть нужные Media Queries для iPhone можно вот здесь. И свойство flex из-за своей новизны так же требует вендорных префиксов. В коде у вас этого не вижу. Здесь можно посмотреть как поддерживается свойство flex.

Ответ 2



Вот сайтец, где все есть Iphone media query

воскресенье, 15 декабря 2019 г.

Типичные ошибки программирования на Objective-C [закрыт]

#ipad #cocoa #objective_c #ios #iphone


        
             
                
                    
                        
                            Closed. This question is off-topic. It is not currently
accepting answers.
                            
                        
                    
                
                            
                                
                
                        
                            
                        
                    
                        
                            Want to improve this question? Update the question so
it's on-topic for Stack Overflow на русском.
                        
                        Closed 4 года назад.
                                                                                
           
                
        
Расскажите общие ошибки, допущенные Objective-C разработчиками, которые вы знаете.
Как мы можем их избежать? В общем, хотелось бы увидеть ошибки связанные с управлением
памятью, анти-паттерны и любые другие ошибки программирования под iOS.
Пожалуйста, обоснуйте свой ответ, а также можно привести примеры.
Начну с одной известной ошибки. Это объявление нового класса без суперкласса, т.е.
предполагая, что он будет иметь суперкласс по умолчанию. Здесь важно помнить, что Objective-c
не поддерживает множественное наследование, НО поддерживает несколько корней. То есть
корень - это не обязательно только класс NSObject. Таким образом, если вы пишете
/* не имеет суперкласса, не делайте этого! */
@interface MyClass
@end

Вы объявляете новый корень, а не подкласс NSObject.
Все подклассы NSObject должны быть прописаны вот так:
/* суперкласс NSObject */
@interface MyClass : NSObject
@end
    


Ответы

Ответ 1



UIViews и UIViewControllers - разные вещи и не могут быть взаимозаменяемыми. Не каждый контроллер должен быть UIViewController. Жизненный цикл UIViewController. В частности вьюшка выгружается (unloaded) в ответ на memory warnings. Обычно это бывает, когда разработчик использует вьюшку для хранения данных. Результат - потеря данных.

Ответ 2



Эта ошибка относится не только для новичков Objective-C (но и для Java, например). То есть проблема общего понимания того, что пишешь. Сравнение через == str == @"Test" Вместо [str isEqualToString:@"Test"]

Ответ 3



Самая типичная ошибка - нахвататься верхушек, минуя стадию получения полноценных базовых знаний по языку и его обвязке. Остальное всего лишь следствие.

вторник, 16 июля 2019 г.

Обновления приожения ios

В апсторе есть приложение которое разрабатывалось с учетом ios6, нижняя планка была ios5.Теперь я хочу сделать в пятом xcode версию для ios7 (обновленье). Но собранный мной вариант выглядит нормально в семерке,но на шестой версии оси там проблемы а автолэяутом. Гарантирует ли что что я собрал это обновление в пятом xcode что владельцам семерки придет обновление а владельцам шестерки нет(это то что мне нужно)?


Ответ

В настройках XCode можно поставить минимальную версию iOS. Тогда обновление прийдёт тем людям, у которых стоит нужная Вам iOS.

пятница, 12 июля 2019 г.

Работа с Аудио

Добрый день. Уважаемые гуру, если ли возможность записывать аудио файл и одновременно слышать что именно ты записываешь (Что говоришь) воспроизводить его как-то... Если есть, то как в этому относиться устройство ? Ему не плохо от этого? И может у вас есть подобные статьи? Я не нашел в иннете ничего подобного. Заранее спасибо!


Ответ

aurioTouch из стандартных примеров по objective-c тебе в помощь) http://developer.apple.com/library/ios/#samplecode/aurioTouch/Introduction/Intro.html

Под какие разрешения рисовать макеты для андроид/ios приложения?

Под какие разрешения рисовать макеты для андроид приложения? Приложение будет писаться на phonegap, так что должны быть и разрешения для айфонов и для андроидов. Дизайнеру нужно конкретно сказать, а я никак не могу решить. Может есть где-нибудь статистические данные по расширениям?


Ответ

Во-первых нужно четко понимать разницу между разрешением экрана, его размером, и глубиной изображения. Во-вторых, какие нужны экраны для Android приложения очень сильно зависит от того под какие девайсы вы хотите разрабатывать свое приложение. Так как мне жалко андроидщиков очень сильно в этом плане просто ппц как жалко, вот вам в помощь фрагментация экранов по разным сортировкам, экраны нужно будет сопоставить моделям устройств. От этих картинок должны отталкиваться маркетологи, менеджеры по прадажам и прочие люди заинтересованные покрытием рынка. И только после этого они говорят какие расширения вы будете поддерживать для Android устройств, так как и наче верстальщик интерфейсов разбогатеет если вы будете охватывать все девайсы. В-третьих, что косается iOS устройств, дизайнер должен знать на зубок, как таблицу умножения и разрешения экранов и глубину пиксей и правило формирования имен графических файлов. Дайте ему ссылку на сюда и на офф доку. Ну и в-четвертых, если дизайнер не освоит соглашения по графике, можете его уволить :) p.s. Наш дизайнер по андроиду написал специальный скрипт для фотошопа, который режит картинку высого разрешения на разные, заранее запланированные, девайсы изменяя глубину иконок.

воскресенье, 14 апреля 2019 г.

Как в Objective-C изменить стандартный переход в Storyboard из одной сцены к другой

В моем проекте пока стоит стандартный переход от сцены к сцене при push. А мне задумалось сделать что-то поинтереснее. Как это можно реализовать? У меня в основе стоит Navigation Controller. И кстати когда я пытался сделать переход типа modal - симулятор прекращал работу приложения. Ну и хочется сделать что-то поинтереснее чем четыре модальных варианта. Заранее благодарен за помощь )


Ответ

Вот вам история в картинках:
1) Начинаете с того, что добавляете новый класс:

2) Делаете его подклассом UIStoryboardSegue, называете его, как хотите:

3) Добавляете в получившийся .m-метод метод perform:
#import "CustomSegue.h"
#import
@implementation CustomSegue
- (void)perform { UIViewController *sourceViewController = (UIViewController *)[self sourceViewController]; UIViewController *destinationController = (UIViewController *)[self destinationViewController];
CATransition* transition = [CATransition animation]; transition.duration = .25; transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]; transition.type = kCATransitionPush; //kCATransitionMoveIn; //, kCATransitionPush, kCATransitionReveal, kCATransitionFade transition.subtype = kCATransitionFromTop; //kCATransitionFromLeft, kCATransitionFromRight, kCATransitionFromTop, kCATransitionFromBottom
[sourceViewController.navigationController.view.layer addAnimation:transition forKey:kCATransition];
[sourceViewController.navigationController pushViewController:destinationController animated:NO]; }
@end

4) Идете в Storyboard. Удерживая Control, тянете от одного контроллера к другому мышь - отпускаете, выбираете custom

5) Указываете в свойствах этой Segue, что её класс - CustomSegue.

6) Добавляете в проект фреймворк QuartzCore (если он ещё не добавлен).

7) Пробуете разные способы анимации через изменение опций в методе perform
Удачи!

Возможна ли локализация UI элементов в Xcode iOS?

Возможно ли наитивным образом поставить, чтобы надпись в searcBar для отмены была не "cancel", а "отмена", в TableView при commitEditingStyle были надписи в строках не "Delete", а "Удалить". Это вообще возможно как то прописать в настройках среды, или где еще, или только самому прописывать можно? В симуляторе стоит в настройках русский язык. Искал в сети на обоих языках - нашел информацию только что для подобных элементов язык сам должен правильный выставляться, но в моем случае этого не происходит. Работаю в Xcode 5, iOS 7 SDK. Для SearchBar пробовал этот способ: [[UIButton appearanceWhenContainedIn:[UISearchBar class], nil] setTitle:@"Отмена" forState:UIControlStateNormal]; Не помогло.


Ответ

Конечно возможно, все базовые вещи переводятся автоматом, если вы включаете поддержку других языков в своем проекте. Все остальные строки локализуются либо через NSLocalizedString либо через Base Internationalization в Storyboard. Все строки в сториборде могут быть локализованы, делается это также при добавлении Base в список Languages (у вашей сториборды появляются локализованные варианты). В UISearchBar кнопка будет локализована автоматическии, если вы добавите язык в Проект (вверху слева в дереве навигации по проекту) -> далее следует выбрать проект (не target) -> вкладка Info -> раздел Localizations - список языков

Чтобы локализовывать свои UI элементы - self.label.text = NSLocalizedString(@"Sting to be localized", @"comment for translator");
вот хороший туториал по локализации (теперь на русском): http://www.raywenderlich.com/ru/36227/Локализация-приложений-в-ios
а по сторибордам там вроде и так все предельно ясно будет, единственное, autolayout должен быть включен

четверг, 25 октября 2018 г.

Типичные ошибки программирования на Objective-C [закрыт]

Расскажите общие ошибки, допущенные Objective-C разработчиками, которые вы знаете. Как мы можем их избежать? В общем, хотелось бы увидеть ошибки связанные с управлением памятью, анти-паттерны и любые другие ошибки программирования под iOS. Пожалуйста, обоснуйте свой ответ, а также можно привести примеры. Начну с одной известной ошибки. Это объявление нового класса без суперкласса, т.е. предполагая, что он будет иметь суперкласс по умолчанию. Здесь важно помнить, что Objective-c не поддерживает множественное наследование, НО поддерживает несколько корней. То есть корень - это не обязательно только класс NSObject. Таким образом, если вы пишете /* не имеет суперкласса, не делайте этого! */ @interface MyClass @end Вы объявляете новый корень, а не подкласс NSObject. Все подклассы NSObject должны быть прописаны вот так: /* суперкласс NSObject */ @interface MyClass : NSObject @end


Ответ

UIViews и UIViewControllers - разные вещи и не могут быть взаимозаменяемыми. Не каждый контроллер должен быть UIViewController. Жизненный цикл UIViewController. В частности вьюшка выгружается (unloaded) в ответ на memory warnings. Обычно это бывает, когда разработчик использует вьюшку для хранения данных. Результат - потеря данных.