Страницы

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

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

суббота, 11 апреля 2020 г.

Apple сделала reject приложению

#ios #objective_c #apple

                    
Ребята, у меня в принципе простое приложение. Которое должно проигрывать музыку посредством
AVPlayer'a. 
Вроде все хорошо, сделал чтобы она играла и тогда когда приложение идет в background.

Но я все сделал так как Apple говорит Здесь

И так: 


  First, declare your application provides specific background services
  and must be allowed to continue running while in the background. To do
  this, add the UIBackgroundModes key in your app's Info.plist file. Its
  value is an array that contains one or more strings that identify
  which background tasks your application supports. Specify the string
  value audio to indicate the application plays audible content to the
  user while in the background:


Плюс так:


  Listing 1  Setting the audio category to allow playback when the
  screen locks or when the Ring/Silent switch is set to silent.


#import 
#import 

AVAudioSession *audioSession = [AVAudioSession sharedInstance];

NSError *setCategoryError = nil;
BOOL success = [audioSession setCategory:AVAudioSessionCategoryPlayback error:&setCategoryError];
if (!success) { /* handle the error condition */ }

NSError *activationError = nil;
success = [audioSession setActive:YES error:&activationError];
if (!success) { /* handle the error condition */ }


Но сегодня пришел реджект со словами:


  
    June 17, 2015 at 6:12 AM От: Apple
    2.16 - Multitasking Apps may only use background services for their intended
purposes: VoIP, audio playback, location, task completion,
    local notifications, etc.
    2.16 Details
  
  
  Your app declares support for audio in the UIBackgroundModes key in
  your Info.plist, but we were unable to play any audible content when
  the application was running in the background.
  
  Next Steps
  
  The audio key is intended for use by applications that provide audible
  content to the user while in the background, such as music player or
  streaming audio applications. Please revise your app to provide
  audible content to the user while the app is in the background or
  remove the "audio" setting from the UIBackgroundModes key.
  
  Resources
  
  If you have difficulty reproducing a reported issue, please try
  testing the workflow described in Technical Q&A QA1764: How to
  reproduce bugs reported against App Store submissions.
  
  If you have code-level questions after utilizing the above resources,
  you may wish to consult with Apple Developer Technical Support. When
  the DTS engineer follows up with you, please be ready to provide:
  - complete details of your rejection issue(s)
  - screenshots
  - steps to reproduce the issue(s)
  - symbolicated crash logs - if your issue results in a crash log


Подскажите что не так делаю, запутался если честно((

Заранее спасибо!
    


Ответы

Ответ 1



В принципе все так как советовал товарищ Sega-Zero. в коде исправил мелкие недочеты написал развернутое сообщение интервьюеру, от том как правильно запустить и зачем, а главное когда нужно воспроизведения музыки в фоне После чего получил одобрение в apple store.

вторник, 17 марта 2020 г.

Apple push notification - как правильно отобразить нужный контроллер?

#objective_c #ios #apple #ios7


Доброе время суток! В общем столкнулся с проблемой, приходит уведомление, скажем
"Вам пришло новое сообщение", мне необходимо открыть чат с этим пользователем, но что
бы попасть в чат, нужно прочти 3 экрана от стартового, либо же пользователь не выходит
с приложения, а заблокировал телефон на контроллере чата, подскажите пожалуйста, каким
образом нужно/можно/будет правильно открывать нужный контроллер? Если к нему нужно
добиратся через 3-9 земель? или не наоборот?
Заранее спасибо за помощь!     


Ответы

Ответ 1



Думаю здесь больше зависит от архитектуры приложения. Вот у меня, например, несколько NavigationControllers и у каждого есть переход в чат. Дак контрол чата принимает на вход модель собеседников и таким образом я могу его вызвать в любом месте через пуш, сформулировав перед этим все модели данных для чат контрола. - (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo { UINavigationController *navController = (UINavigationController *)self.window.rootViewController; NotificationViewController *notificationViewController = [[NotificationViewController alloc] init]; [navController.visibleViewController.navigationController pushViewController:notificationViewController]; } Но в этом примере я пушаюсь сразу же в чат без промежуточных экранов. Если же задача стоит именно пропушиться туда где чат пройдя по промежуточным экраном, то тут нужно придумать какой-нибудь алгоритм переходов с неким path пушей экранов с анимацией, с блоком завершения анимации и пушингом следующего контрола в path . В общем много вариантов, на самом деле, все зависит от ТЗ.

понедельник, 24 февраля 2020 г.

Проверка пароля при вводе в TextField

#ios #xcode #swift #apple


Подскажите пожалуйста, у меня есть TextField в который я ввожу пароль. После добавления
нового символа мне необходимо проверять соответствие пароля некоторым требованиям (например
8 символов). Как можно этого добиться?
Заранее спасибо)
    


Ответы

Ответ 1



Самый простой вариант: 1 2 Задаете тип Connection - Action, Type - UITextField, Event - Editing Changed. 3 Проверяете что необходимо. К примеру, длина введенного текста 8 и больше символов: @IBAction func myTfToCheck(_ sender: UITextField) { if let text = sender.text { let textLength = text.characters.count if textLength > 7 { //Do something print("\(text), length: \(textLength)") } } }

Ответ 2



Можно использовать готовый валидатор, этот TextFieldValidator для obj-c, но и под свифт аналогов тьма. Множество настроек, подсказки юзеру, проверка на совпадение паролей и тд.

Ответ 3



Вот ссылка, тут есть все что вам надо ) https://stackoverflow.com/questions/25223407/max-length-uitextfield Чуть не забыл, не забудьте прописать делегат в расширении класса - UITextFieldDelegate и указать этот делегат своему TextField yourTextField.delegate = self Пользуйся.

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

Используется ли во всех браузерах независимо от ОС перевод строки \r\n?

#linux #windows #http #браузер #apple


Добрый день! Наткнулся на информацию, что в разных операционных системах перевод
строки пишется по-разному:

Windows - \r\n

Apple - \r

Linux - \n

Но также где-то писали, что HTTP протокол независимо от системы использует \r\n.

Кому верить?
    


Ответы

Ответ 1



формат заголовков http соответствует спецификации, изложенной в rfc822. согласно секции 3.1.2 rfc822, поле заголовка должно заканчиваться двумя символами — возврат каретки (carriage-return, cr, в ascii — шестнадцатиричное значение 0d) и перевод строки (line-feed, lf, в ascii — шестнадцатиричное значение 0a): Once a field has been unfolded, it may be viewed as being composed of a field-name followed by a colon (":"), followed by a field-body, and terminated by a carriage-return/line-feed. в теле же сообщения (это может быть и html-страница, и вообще всё что угодно, например, просто бинарные данные), конечно, могут встретиться любые символы в любой комбинации.

суббота, 21 декабря 2019 г.

Аккаунт разработчика | Apple | Украина

#ios #apple


Доброе время суток!
Я живу в Украине, очень хочется получить аккаунт разработчика iOS, как его получить
в Украине, что для этого нужно, и вообще, как это делается в этой стране?    


Ответы

Ответ 1



Вам нужно будет оформить долларовый счет в украинском банке чтобы оплатить с него счет (программа разработчика приложений стоит 100$ в год для физлиц). Идете сначала сюда, кликаете Member Center, дальше все интуитивно по подсказкам. Нужно будет выслать факсом требуемые реквизиты (там все обьяснят), в том числе Вашего счета, так что счет нужно оформить в первую очередь. После этого для Вам будет создан аккаунт на этом сайте и Вы получите доступ ко всем его возможностям а также к сайту Itunes Connect где содержится управление приложениями и статистика. Тут детально описано что нужно будет сделать дальше для того чтобы тестировать на устройствах Ваше приложение и публиковать его в Itunes. Обсуждение вопросов по выводу денег в Украину: Обсуждение Обсуждение1 Обсуждение2 Обсуждение3 Обсуждение4

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

Зачем Apple придумала язык программирования Swift?

#objective_c #swift #apple #дизайн_языка


Чем не устроил их Objective-C? Какие преимущества у Swift перед Objective-C?     


Ответы

Ответ 1



Swift — гораздо более современный язык, не отягощённый проблемами совместимости с C. Добавить фичи наподобие безопасности памяти (memory safety), обобщённых классов/методов (generics), необнуляемых ссылок (non-nullable reference types) было бы очень сложно, оставаясь в рамках Objective C. (Сравните, например, лямбды в Objective C и в Swift'е.) Синкатсис, да и семантика C хороши для низкоуровневых языков (каким, например, C и является), но высокоуровневые фичи проще делать на другой основе.

четверг, 28 ноября 2019 г.

Swift - что за зверь? [закрыт]

#swift #ios #apple


Несколько минут назад apple представило новый яп - swift. Говорят про него они так:
он objective-c without c.

Предлагаю писать сюда всё, что известно о нём. Ну там он динамичный/статичный и т.п.

P.s. Objective-C
    


Ответы

Ответ 1



На первый взгляд, очень похоже на C#, статически типизированный объектно-ориентированный язык. Вот список того, что есть в C# и появилось в Swift по сравнению с Objective C. Автоматический вывод типов переменных. Лямбды с нормальным синтаксисом, гораздо удобнее, чем блоки. Memory safety и отсутствие wild pointer'ов в качестве бонуса. Дженерики. Циклы наподобие foreach. value types и reference types, структуры и классы Функции — объекты первого класса (раз уж есть лямбды...) type safety, отсутствие undefined behaviour Nullable Именованные аргументы функций, out-параметры (отречёмся от старого ми-и-ира!) string interpolation (будет в C# 6) поддержка safe-навигации (будет в C# 6) Теперь преимущества: Есть let — объявление констант внутри тела функции. В C# есть такое лишь в ограниченном контексте (LINQ query syntax). Неясна точная семантика: это deep const или shallow const? Если deep, имеет ли объект право измениться сам по себе? Синтаксическая поддержка инициализации списков, словарей и кортежей. Расширения (extensions) сильнее, чем Extension Methods из C#: добавляются статические методы, а также имплементируются протоколы. (Не знаю, как это соотносится с категориями Objective C.) Delegation — очень похоже на mix-in'ы, хочу такое в C#. Мощнейший switch с pattern matching'ом. Вложенные функции! (Надеюсь, они наследуют контекст.) where-constraint в generic'ах мощнее Конструктор базового класса можно вызывать где угодно, не только в начале. AOP-образные willSet и didSet Укороченный синтаксис для лямбд ($1 etc.) Отличия, забавные и серьёзные: Garbage collector'а нету, есть ARC. Ручная расстановка слабых ссылок и проблемы с closure в комплекте. Миленькие trailing closures. Методы по умолчанию виртуальные, как в Java. Массивы и словари — value type, копируются при передаче в качестве параметров. Более правильный порядок записи типов: тип после переменной, тип возвращаемого значения после аргументов Приятная конструкция if let для safe navigation. Чего не увидел: Нет LINQ-образных lazy enumerations event'ы? Без них программирование UI не очень удобно. А где исключения? Опять пробрасывать nil? Встроенная в язык поддержка многопоточности? Пора бы уже, 2014 год.

Ответ 2



Всё, что вам нужно знать про Swift - в принципе достаточно грамотно всё расписано

Ответ 3



Доки, Книга: The Swift Programming Language. Apple Inc..

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

Apple сделала reject приложению

Ребята, у меня в принципе простое приложение. Которое должно проигрывать музыку посредством AVPlayer'a. Вроде все хорошо, сделал чтобы она играла и тогда когда приложение идет в background.
Но я все сделал так как Apple говорит Здесь
И так:
First, declare your application provides specific background services and must be allowed to continue running while in the background. To do this, add the UIBackgroundModes key in your app's Info.plist file. Its value is an array that contains one or more strings that identify which background tasks your application supports. Specify the string value audio to indicate the application plays audible content to the user while in the background:
Плюс так:
Listing 1 Setting the audio category to allow playback when the screen locks or when the Ring/Silent switch is set to silent.
#import #import
AVAudioSession *audioSession = [AVAudioSession sharedInstance];
NSError *setCategoryError = nil; BOOL success = [audioSession setCategory:AVAudioSessionCategoryPlayback error:&setCategoryError]; if (!success) { /* handle the error condition */ }
NSError *activationError = nil; success = [audioSession setActive:YES error:&activationError]; if (!success) { /* handle the error condition */ }
Но сегодня пришел реджект со словами:
June 17, 2015 at 6:12 AM От: Apple 2.16 - Multitasking Apps may only use background services for their intended purposes: VoIP, audio playback, location, task completion, local notifications, etc. 2.16 Details Your app declares support for audio in the UIBackgroundModes key in your Info.plist, but we were unable to play any audible content when the application was running in the background. Next Steps The audio key is intended for use by applications that provide audible content to the user while in the background, such as music player or streaming audio applications. Please revise your app to provide audible content to the user while the app is in the background or remove the "audio" setting from the UIBackgroundModes key. Resources If you have difficulty reproducing a reported issue, please try testing the workflow described in Technical Q&A QA1764: How to reproduce bugs reported against App Store submissions. If you have code-level questions after utilizing the above resources, you may wish to consult with Apple Developer Technical Support. When the DTS engineer follows up with you, please be ready to provide: - complete details of your rejection issue(s) - screenshots - steps to reproduce the issue(s) - symbolicated crash logs - if your issue results in a crash log
Подскажите что не так делаю, запутался если честно((
Заранее спасибо!


Ответ

В принципе все так как советовал товарищ Sega-Zero
в коде исправил мелкие недочеты написал развернутое сообщение интервьюеру, от том как правильно запустить и зачем, а главное когда нужно воспроизведения музыки в фоне
После чего получил одобрение в apple store

понедельник, 12 ноября 2018 г.

Аккаунт разработчика | Apple | Украина

Доброе время суток! Я живу в Украине, очень хочется получить аккаунт разработчика iOS, как его получить в Украине, что для этого нужно, и вообще, как это делается в этой стране?


Ответ

Вам нужно будет оформить долларовый счет в украинском банке чтобы оплатить с него счет (программа разработчика приложений стоит 100$ в год для физлиц). Идете сначала сюда, кликаете Member Center, дальше все интуитивно по подсказкам. Нужно будет выслать факсом требуемые реквизиты (там все обьяснят), в том числе Вашего счета, так что счет нужно оформить в первую очередь. После этого для Вам будет создан аккаунт на этом сайте и Вы получите доступ ко всем его возможностям а также к сайту Itunes Connect где содержится управление приложениями и статистика. Тут детально описано что нужно будет сделать дальше для того чтобы тестировать на устройствах Ваше приложение и публиковать его в Itunes. Обсуждение вопросов по выводу денег в Украину: Обсуждение Обсуждение1 Обсуждение2 Обсуждение3 Обсуждение4

среда, 24 октября 2018 г.

Зачем Apple придумала язык программирования Swift?

Чем не устроил их Objective-C? Какие преимущества у Swift перед Objective-C?


Ответ

Swift — гораздо более современный язык, не отягощённый проблемами совместимости с C. Добавить фичи наподобие безопасности памяти (memory safety), обобщённых классов/методов (generics), необнуляемых ссылок (non-nullable reference types) было бы очень сложно, оставаясь в рамках Objective C. (Сравните, например, лямбды в Objective C и в Swift'е.) Синкатсис, да и семантика C хороши для низкоуровневых языков (каким, например, C и является), но высокоуровневые фичи проще делать на другой основе.

среда, 3 октября 2018 г.

Swift - что за зверь? [закрыт]

Несколько минут назад apple представило новый яп - swift. Говорят про него они так: он objective-c without c.
Предлагаю писать сюда всё, что известно о нём. Ну там он динамичный/статичный и т.п.
P.s. Objective-C


Ответ

На первый взгляд, очень похоже на C#, статически типизированный объектно-ориентированный язык. Вот список того, что есть в C# и появилось в Swift по сравнению с Objective C. Автоматический вывод типов переменных. Лямбды с нормальным синтаксисом, гораздо удобнее, чем блоки. Memory safety и отсутствие wild pointer'ов в качестве бонуса. Дженерики. Циклы наподобие foreach value types и reference types, структуры и классы Функции — объекты первого класса (раз уж есть лямбды...) type safety, отсутствие undefined behaviour Nullable Именованные аргументы функций, out-параметры (отречёмся от старого ми-и-ира!) string interpolation (будет в C# 6) поддержка safe-навигации (будет в C# 6) Теперь преимущества: Есть let — объявление констант внутри тела функции. В C# есть такое лишь в ограниченном контексте (LINQ query syntax). Неясна точная семантика: это deep const или shallow const? Если deep, имеет ли объект право измениться сам по себе? Синтаксическая поддержка инициализации списков, словарей и кортежей. Расширения (extensions) сильнее, чем Extension Methods из C#: добавляются статические методы, а также имплементируются протоколы. (Не знаю, как это соотносится с категориями Objective C.) Delegation — очень похоже на mix-in'ы, хочу такое в C#. Мощнейший switch с pattern matching'ом. Вложенные функции! (Надеюсь, они наследуют контекст.) where-constraint в generic'ах мощнее Конструктор базового класса можно вызывать где угодно, не только в начале. AOP-образные willSet и didSet Укороченный синтаксис для лямбд ($1 etc.) Отличия, забавные и серьёзные: Garbage collector'а нету, есть ARC. Ручная расстановка слабых ссылок и проблемы с closure в комплекте. Миленькие trailing closures. Методы по умолчанию виртуальные, как в Java. Массивы и словари — value type, копируются при передаче в качестве параметров. Более правильный порядок записи типов: тип после переменной, тип возвращаемого значения после аргументов Приятная конструкция if let для safe navigation. Чего не увидел: Нет LINQ-образных lazy enumerations event'ы? Без них программирование UI не очень удобно. А где исключения? Опять пробрасывать nil? Встроенная в язык поддержка многопоточности? Пора бы уже, 2014 год.