Вопросы по тегу: ios

(189)

«Не вставлять», «Вставлять и подписывать», «Вставлять без подписи». Кто они такие?. Что они делают?

У нас есть 3 новых параметра в разделе «Фреймворки, библиотеки и встроенный контент» Xcode11 Beta для добавления библиотек.Снимок экрана раздела библиотек XcodeКто-нибудь может объяснить, что они делают?
S

Shreeram Bhat

2 года назад

Ответов: 4

Как предотвратить перекрытие макета со строкой состояния iOS

Я работаю над руководством по навигации React Native. Я обнаружил, что все макеты начинают загружаться сверху экрана, а не под строкой состояния. Это приводит к тому, что большинство макетов перекрываются со строкой состояния. Я могу исправить это, добавив дополнение к представлению при их загрузке. Это реальный способ сделать это? Я не думаю, что добавление отступов вручную - это реальный способ решить эту проблему. Есть ли более элегантный способ исправить это?import React, { Component } from 'react'; import { View, Text, Navigator } from 'react-native'; export default class MyScene extends Component { static get defaultProps() { return { title : 'MyScene' }; } render() { return ( //padding to prevent overlap Hi! My name is {this.props.title}. ) } } Ниже показаны скриншоты до и после добавления отступов.
C

Cliff

5 лет назад

Ответов: 9

Разработка для устройств iOS в среде Windows с помощью Flutter

Я новичок во Flutter, просто интересно, возможно ли это.Я пытался создать демонстрационный код с помощью Intellij с заданной инструкцией (https://flutter.io/setup/). Он хорошо работает на устройстве Android, но не может найти возможность скомпилировать и запустить его на моем устройстве iOS.
Y

YYY

4 года назад

Ответов: 6

Как запретить Firebase регистрировать обновления статуса при запуске приложения

Каждый раз, когда я запускаю приложение FireBase, оно регистрирует состояние различных функций Firebase. Сейчас логируется вот это:Configuring the default app. Firebase Analytics v.3200000 started To enable debug logging set the following application argument: -FIRAnalyticsDebugEnabled (see ...) Successfully created Firebase Analytics App Delegate Proxy automatically. To disable the proxy, set the flag FirebaseAppDelegateProxyEnabled to NO in the Info.plist FIRInstanceID AppDelegate proxy enabled, will swizzle app delegate remote notification handlers. To disable add "FirebaseAppDelegateProxyEnabled" to your Info.plist and set it to NO Firebase Analytics enabled Я просмотрел модули и не нашел никаких операторов печати, так как еще я могу предотвратить их ведение журнала сверхурочно, когда я запускаю приложение?
J

JCode

6 лет назад

Ответов: 10

Swift программно переходит к другому контроллеру представления/сцене

Я использую следующий код для программного перехода к другому ViewController. Он отлично работает, но каким-то образом скрывает панель навигации.Как это исправить? (панель навигации создается путем встраивания ViewController в навигационный контроллер, если это имеет значение.)let storyBoard : UIStoryboard = UIStoryboard(name: "Main", bundle:nil) let nextViewController = storyBoard.instantiateViewControllerWithIdentifier("nextView") as NextViewController self.presentViewController(nextViewController, animated:true, completion:nil)
V

Victor

5 лет назад

Ответов: 8

Как передавать данные с помощью NotificationCenter в Swift 3.0 и NSNotificationCenter в Swift 2.0?

Я реализую socket.io в своем приложении Swift iOS.В данный момент на нескольких панелях слушаю сервер и жду входящие сообщения. Я делаю это, вызывая функцию getChatMessage на каждой панели:func getChatMessage(){ SocketIOManager.sharedInstance.getChatMessage { (messageInfo) -> Void in dispatch_async(dispatch_get_main_queue(), { () -> Void in //do sth depending on which panel user is }) } } Однако я заметил, что это неправильный подход, и мне нужно изменить его - теперь я хочу начать прослушивание входящих сообщений только один раз, и когда приходит какое-либо сообщение - передавать это сообщение на любую панель, которая его прослушивает.Итак, я хочу передать входящее сообщение через NSNotificationCenter. До сих пор мне удавалось передавать информацию о том, что что-то произошло, но не передавать сами данные. Я делал это:NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(ViewController.showSpinningWheel(_:)), name: showSpinner, object: nil) тогда у меня была функция с именем: func showSpinningWheel(notification: NSNotification) { } и каждый раз, когда я хотел позвонить, я делал:NSNotificationCenter.defaultCenter().postNotificationName(hideSpinner, object: self) Так как я могу передать объект messageInfo и включить его в вызываемую функцию?
u

user3766930

6 лет назад

Ответов: 6

Как настроить высоту UICollectionView так, чтобы она соответствовала высоте размера содержимого UICollectionView?

Я хотел бы, чтобы UICollectionView (красный) уменьшался до высоты размера содержимого, в данном случае UICollectionViewCells (желтые), потому что есть много пустого места. Я пытался использовать:override func layoutSubviews() { super.layoutSubviews() if !__CGSizeEqualToSize(bounds.size, self.intrinsicContentSize) { self.invalidateIntrinsicContentSize() } } override var intrinsicContentSize: CGSize { return self.collection.contentSize } но возврат self.collection.contentSize всегда возвращает (ширина, 0) и по этой причине он слишком сильно сжимается до значения высоты 30 (значение, которое я установил в файле XIB для высоты, хотя у меня есть константа >= 30).
c

charbinary

5 лет назад

Ответов: 16

Ошибка Xcode в симуляторе: MGIsDeviceOneOfType не поддерживается на этой платформе

У меня есть очень простое приложение с одним представлением, содержащим несколько UILabels. При запуске в симуляторе консоль Xcode возвращает ошибку: libMobileGestalt MobileGestalt.c:875: MGIsDeviceOneOfType не поддерживается на этой платформе. Сам симулятор просто показывает белый экран. Я также пытался запустить его на устройстве разработчика с тем же белым экраном. Я просмотрел документацию, но не нашел ссылки на MGIsDeviceOneOfType. Приложение написано на Swift в бета-версии Xcode 10 на macOS 10.14. Я пытаюсь запустить его на симуляторах iPhone 7-X, а также на разрабатываемом iPhone 7, на каждом из которых работает целевое программное обеспечение (12.0).
W

Woodman

4 года назад

Ответов: 18

Отключить жест для вытягивания формы/листа страницы в модальном представлении

В iOS 13 модальные презентации, использующие стиль формы и листа страницы, можно закрыть с помощью жеста панорамирования вниз. Это проблематично в одном из моих листов формы, потому что пользователь рисует в этом поле, что мешает жесту. Он тянет экран вниз вместо того, чтобы рисовать вертикальную линию.Как отключить вертикальный жест для закрытия жеста в контроллере модального представления, представленном в виде листа?Setting isModalInPresentation = true по-прежнему позволяет вытягивать лист вниз, просто он не закрывается.
J

Jordan H

3 года назад

Ответов: 15

SwiftUI — как избежать жестко запрограммированной навигации в представлении?

Я пытаюсь создать архитектуру для более крупного, готового к производству приложения SwiftUI. Я все время сталкиваюсь с одной и той же проблемой, которая указывает на серьезный недостаток дизайна в SwiftUI.По-прежнему никто не мог дать мне полный рабочий ответ, готовый к производству.Как сделать многоразовые представления в SwiftUI, которые содержат навигацию?Поскольку SwiftUI NavigationLink сильно привязан к представлению, это просто невозможно таким образом, чтобы он масштабировался и в больших приложениях.NavigationLink в этих небольших примерах приложений работает, да, но не сразу, как только вы захотите повторно использовать множество представлений в одном приложении. И, возможно, также повторное использование границ модуля. (например: повторное использование View в iOS, WatchOS и т. д.)Проблема дизайна: NavigationLinks жестко закодированы в представлении.NavigationLink(destination: MyCustomView(item: item)) Но если представление, содержащее этот NavigationLink, должно быть многоразовым, я не могу жестко запрограммировать место назначения. Должен быть механизм, который обеспечивает пункт назначения. Я спросил это здесь и получил довольно хороший ответ, но все же не полный ответ:SwiftUI MVVM Координатор/Маршрутизатор/NavigationLinkИдея заключалась в том, чтобы внедрить целевые ссылки в многоразовое представление. В целом идея работает, но, к сожалению, она не масштабируется до реальных производственных приложений. Как только у меня появляется несколько многоразовых экранов, я сталкиваюсь с логической проблемой, заключающейся в том, что для одного многократно используемого представления (ViewA) требуется предварительно сконфигурированное представление-назначение (ViewB). Но что, если ViewB также требуется предварительно сконфигурированное представление-назначение ViewC? Мне нужно было бы создать ViewB уже таким образом, чтобы ViewC уже вводился в ViewB, прежде чем я введу ViewB в ВидA. И так далее.... но поскольку данные, которые должны быть переданы в это время, недоступны, вся конструкция терпит неудачу.Еще одна идея, которая у меня была, состояла в том, чтобы использовать Environment в качестве механизма внедрения зависимостей для внедрения адресатов для NavigationLink. Но я думаю, что это следует рассматривать более или менее как хак, а не как масштабируемое решение для больших приложений. В конечном итоге мы бы использовали Environment практически для всего. Но поскольку Environment также может использоваться только внутри представлений (а не в отдельных координаторах или моделях представлений), это снова создаст странные конструкции, на мой взгляд.Как и бизнес-логика (например, код модели представления) и представление должны быть разделены, также должны быть разделены навигация и представление (например, шаблон координатора). В UIKit это возможно, потому что мы обращаемся к UIViewController и UINavigationController за представлением.UIKit's MVC уже столкнулся с проблемой, состоящей в том, что он смешал так много концепций, что получил забавное имя "Massive-View-Controller" вместо "Model-View-Controller". Теперь аналогичная проблема сохраняется в SwiftUI, но, на мой взгляд, даже хуже. Навигация и представления сильно связаны и не могут быть разделены. Поэтому невозможно создавать многоразовые представления, если они содержат навигацию. Это можно было решить в UIKit, но теперь я не вижу вменяемого решения в SwiftUI. К сожалению, Apple не предоставила нам объяснения, как решать подобные архитектурные проблемы. У нас есть только несколько небольших примеров приложений.Я бы хотел оказаться неправым. Пожалуйста, покажите мне чистый шаблон дизайна приложения, который решает эту проблему для больших приложений, готовых к производству.Заранее спасибо.Обновление: эта награда закончится через несколько минут, и, к сожалению, до сих пор никто не смог предоставить работающий пример. Но я начну новую награду для решения этой проблемы, если не найду другого решения и свяжу его здесь. Спасибо всем за их большой вклад!Обновление от 18 июня 2020 г.: Я получил ответ от Apple по этой проблеме, предлагающий что-то вроде этого для разделения представлений и моделей:enum Destination { case viewA case viewB case viewC } struct Thing: Identifiable { var title: String var destination: Destination // … other stuff omitted … } struct ContentView { var things: [Thing] var body: some View { List(things) { NavigationLink($0.title, destination: destination(for: $0)) } } @ViewBuilder func destination(for thing: Thing) -> some View { switch thing.destination { case .viewA: return ViewA(thing) case .viewB: return ViewB(thing) case .viewC: return ViewC(thing) } } } Мой ответ: Спасибо за отзыв. Но, как вы видите, у вас все еще есть сильные соединение в представлении. Теперь «ContentView» нужно знать все представления (ViewA, ViewB, ViewC) он также может перемещаться. Как я уже сказал, это работает в небольшие примеры приложений, но они не масштабируются до больших приложений, готовых к производству. Представьте, что я создаю собственное представление в проекте на GitHub. А потом импортировать это представление в мое приложение. Этот пользовательский вид ничего не знает о других представлениях, по которым он может перемещаться, потому что они специфичны в мое приложение. Надеюсь, я лучше объяснил проблему. Единственное правильное решение этой проблемы, которое я вижу, это разделить Навигация и представления как в UIKit. (например, UINavigationController) Спасибо, Дарко Так что до сих пор нет чистого и рабочего решения этой проблемы. С нетерпением жду WWDC 2020.Обновление от сентября 2021 г.: Использование AnyView не является хорошим общим решением этой проблемы. В больших приложениях в основном все представления должны быть спроектированы таким образом, чтобы их можно было использовать повторно. Это означает, что AnyView используется везде. У меня был сеанс с двумя разработчиками Apple, и они ясно объяснили мне, что AnyView создает гораздо худшую производительность, чем View, и его следует использовать только в исключительных случаях. Основной причиной этого является то, что тип AnyView не может быть разрешен во время компиляции, поэтому он должен быть выделен в куче.
D

Darko

2 года назад

Ответов: 12

Autolayout игнорируется в Custom UITableViewCell

Несмотря на установленные ограничения для всех элементов, включая вертикальные, необходимые ячейке для расчета ее высоты, авто-разметка как бы игнорируется: все ячейки сжимаются.Вот скриншот результата и ограничений в раскадровке:В VC, который содержит tableView, вот код в viewDidLoad:tableView.estimatedRowHeight = 120.0 tableView.rowHeight = UITableViewAutomaticDimension Комментирование второй строки дает ячейки с высотой 120,0, но Autolayout также игнорируется.ОбновлениеДля упрощения интерфейса я оставил одну метку с ограничениями: Впереди место для супервизора Верхнее место для суперпросмотра Фиксированная ширина и высота (100 и 100) Нижнее пространство до поля контейнера, чтобы убедиться, что ячейка имеет все вертикальные ограничения для определения ее высоты И с этим упрощенным интерфейсом авто-макет по-прежнему не учитывается, что намекает мне, что проблема возникла не из-за плохо установленных ограничений.В Инспекторе размеров высота строки установлена ​​на 120 и установлен флажок «Пользовательский». Ячейка имеет правильный пользовательский класс, идентификатор повторного использования ячейки правильный.
K

Kqtr

5 лет назад

Ответов: 2

Ошибка iOS 10 [доступ] <private> при использовании UIImagePickerController

Я использую XCode 8 и тестирую iOS 10.2 Beta.Я добавил в проект фреймворки Photos, PhotosUI и MobileCoreServices.Очень простой код:#import #import #import @interface ViewController : UIViewController @property (strong, nonatomic) IBOutlet UIImageView *imageview; @end и реализация:- (IBAction)grab:(UIButton *)sender{ UIImagePickerController *picker = [[UIImagePickerController alloc]init]; picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary; picker.allowsEditing = NO; picker.delegate = self; // make sure we include Live Photos (otherwise we'll only get UIImages) NSArray *mediaTypes = @[(NSString *)kUTTypeImage, (NSString *)kUTTypeLivePhoto]; picker.mediaTypes = mediaTypes; // bring up the picker [self presentViewController:picker animated:YES completion:nil]; } Как только я нажимаю кнопку, приложение вылетает с очень бесполезной ошибкой:[доступ] Вот и все. Больше ничего.Используя операторы break, приложение, кажется, аварийно завершает работу в "presentViewController".Это совершенно новое приложение, и у меня в пользовательском интерфейсе нет ничего, кроме кнопки захвата.Кроме того, тестирование на iOS 9.3 работает нормально. Я упустил что-то, что может быть изменено в iOS 10?
s

sudoExclaimationExclaimation

6 лет назад

Ответов: 5

Swift 3 — сравнение объектов даты

Я обновляю свое приложение до синтаксиса Swift 3.0 (я знаю, что оно все еще находится в стадии бета-тестирования, но я хочу быть готовым, как только оно будет выпущено).До предыдущей бета-версии Xcode (бета-версия 5) я мог сравнивать два объекта Date, используя операнды , > и = =. Но в последней бета-версии (Beta 6) это больше не работает. Вот несколько скриншотов: Как видно на обоих скриншотах, это два объекта Date. Но я получаю следующую ошибку: Что я делаю не так? Функции по-прежнему объявлены в классе Date: статическая функция >(дата, дата) Возвращает истину, если Дата в левой части позже по времени, чем Дата в правой части. Это ошибка Беты или я что-то не так делаю?
b

beeef

5 лет назад

Ответов: 14

Как использовать Facebook iOS SDK на iOS 10

Я пытаюсь использовать Xcode 8 для создания приложения с входом в Facebook с помощью Swift 3. Когда я переключаюсь обратно на iOS Simulator 9.3, он работает. В iOS 10 я получаю эту ошибку:""fbauth2:/" The operation couldn’t be completed. (OSStatus error -10814.)" иOptional(Error Domain=com.facebook.sdk.login Code=308 "(null)") У кого-нибудь есть решение?Примечание 1 :После отладки эта проблема заключается в том, что FBSDK не может обновить expect_challange. Функция SecItemUpdate внутри security.framework не работает. Это проблема IOS 10
t

trquoccuong

5 лет назад

Ответов: 6

Проблемы с макетом после обновления до Xcode 8

Вот до и после одного из моих экранов после обновления до Xcode 8.Все, что я сделал, это открыл мой main.storyboard и оттуда я собрал и запустил свое приложение на моем телефоне.В моем контроле версий я вижу, что Xcode вносит много изменений в мой main.storyboard только после того, как я его открыл.Каждый раз, когда я удаляю эти изменения, я вижу то же, что и в Xcode 7.3.1.Но, как только я снова открываю конструктор интерфейсов с раскадровкой, я вижу, что эти изменения возвращаются на свои места. Я могу что-то здесь сделать?до Xcode 8После обновления до Xcode 8
u

user2726072

5 лет назад

Ответов: 16

Профиль не соответствует значению файла прав для разрешения идентификатора приложения.

Я пытаюсь загрузить приложение в магазин приложений и получаю эту ошибку на странице с сертификатами. Насколько я могу судить, я изменил поле, чтобы они совпали, но я что-то упустил.Буду признателен за любую помощь.
P

Paul Raymond

4 года назад

Ответов: 26

Не удалось загрузить URL-адрес транка Cocoapods

Я получаю эту ошибку, когда пытаюсь обновить репозиторий pod и установить pod CDN: URL-адрес магистрали не может быть загружен: https://cdn.cocoapods.org/deprecated_podspecs.txt, ошибка: не удалось открыть TCP-соединение с cdn.cocoapods.org:443 (нет маршрута к хосту — connect(2) для порта "cdn.cocoapods.org" 443) Кто-нибудь знает, как решить эту проблему?
N

Nik Kov

2 года назад

Ответов: 14

Создайте свой собственный код ошибки в Swift 3

Чего я пытаюсь добиться, так это выполнить запрос URLSession в swift 3. Я выполняю это действие в отдельной функции (чтобы не писать код отдельно для GET и POST) и возвращаюURLSessionDataTask и обработка успешных и неудачных закрытий. Вроде так -let task = URLSession.shared.dataTask(with: request) { (data, uRLResponse, responseError) in DispatchQueue.main.async { var httpResponse = uRLResponse as! HTTPURLResponse if responseError != nil && httpResponse.statusCode == 200{ successHandler(data!) }else{ if(responseError == nil){ //Trying to achieve something like below 2 lines //Following line throws an error soo its not possible //var errorTemp = Error(domain:"", code:httpResponse.statusCode, userInfo:nil) //failureHandler(errorTemp) }else{ failureHandler(responseError!) } } } } Я не хочу обрабатывать состояние ошибки в этой функции и хочу сгенерировать ошибку, используя код ответа, и вернуть эту ошибку, чтобы обработать ее, откуда бы эта функция ни вызывалась. Кто-нибудь может сказать мне, как это сделать? Или это не «быстрый» способ справиться с такими ситуациями?
R

Rikh

5 лет назад

Ответов: 10

Получить значение параметров URL

Я пытаюсь получить параметры из URL-адреса с помощью Swift. Допустим, у меня есть следующий URL:http://mysite3994.com?test1=blah&test2=blahblah Как я могу получить значения test1 и test2?
u

user2423476

5 лет назад

Ответов: 5

Ошибка сборки iOS во время компиляции с проблемой «не удалось найти подходящее устройство для типа SimDeviceType»

Я получаю следующую проблему времени компиляции при запуске приложения с Xcode 10.3 beta 2 на iPad Air, я получаю следующую проблему.Failed to find a suitable device for the type SimDeviceType : com.apple.dt.Xcode.IBSimDeviceType.iPad-2x with runtime SimRuntime : 10.3 (14E5239d) - com.apple.CoreSimulator.SimRuntime.iOS-10-3 Любая помощь приветствуется.
R

Rein rPavi

5 лет назад

Ответов: 9

Удаление объекта из массива в Swift 3

В моем приложении я добавил один объект в массив при выборе ячейки и отменил выбор и удалил объект при повторном выборе ячейки. Я использовал этот код, но выдает ошибку.extension Array { func indexOfObject(object : AnyObject) -> NSInteger { return (self as NSArray).indexOfObject(object) } mutating func removeObject(object : AnyObject) { for var index = self.indexOfObject(object); index != NSNotFound; index = self.indexOfObject(object) { self.removeAtIndex(index) } } } class MyViewController: UITableViewController { var arrContacts: [Any] = [] var contacts: [Any] = [] func tableView(_ tableView: UITableView, didDeselectRowAt indexPath: IndexPath) { arrContacts.removeObject(contacts[indexPath.row]) } } У меня выдает 2 такие ошибки:C-style for statement has been removed in Swift 3 Value of type '[Any]' has no member 'removeObject'
K

Kamlesh Shingarakhiya

5 лет назад

Ответов: 13

Инициализатор недоступен из-за «внутреннего» уровня защиты

У меня есть несколько протоколовСтратегия входаpublic protocol LoginStrategy { func login(_ viewController: UIViewController) func getUserInfo(withCompletionHandler completionHandler: @escaping (_ userInfo: [String: Any]?) -> ()) func createLoginButton(_ frame: CGRect, withCompletionHandler completionHandler: @escaping (_ loginButton: UIView) -> ()) func getUserId() -> String } и два класса:ЛогинПровайдерpublic class LoginProvider { public let strategy: LoginStrategy public func login(_ viewController: UIViewController) { return self.strategy.login(viewController) } public func getUserInfo(withCompletionHandler completionHandler: @escaping (_ userInfo: [String: Any]?) -> ()) { return self.strategy.getUserInfo(withCompletionHandler: completionHandler) } public func createLoginButton(_ frame: CGRect, withCompletionHandler completionHandler: @escaping (_ loginButton: UIView) -> ()) { return self.strategy.createLoginButton(frame, withCompletionHandler: completionHandler) } public func getUserId() -> String { return self.strategy.getUserId() } public init(strategy: LoginStrategy) { self.strategy = strategy } } Стратегия входа в Facebookimport Foundation import FacebookCore import FacebookLogin public class FacebookLoginStrategy: LoginStrategy { public var grantedPermissions: Set? = nil public var declinedPermissions: Set? = nil public var userId: String = "" public func login(_ viewController: UIViewController) { let loginManager = LoginManager() let permissions: [ReadPermission] = [.publicProfile, .userFriends, .email] loginManager.logIn(permissions, viewController: viewController) { loginResult in switch loginResult { case .failed(let error): print(error) case .cancelled: print("User cancelled login.") case .success(let grantedPermissions, let declinedPermissions, let accessToken): self.userId = accessToken.userId ?? "" self.grantedPermissions = grantedPermissions self.declinedPermissions = declinedPermissions print("Logged in!") } } } public func getUserId() -> String { return userId } public func getUserInfo(withCompletionHandler completionHandler: @escaping (_ userInfo: [String: Any]?) -> ()) { let request = GraphRequest(graphPath: "me", parameters: ["fields":"email, name"], accessToken: AccessToken.current, httpMethod: .GET, apiVersion: FacebookCore.GraphAPIVersion.defaultVersion) request.start { (response, result) in switch result { case .success(let value): print(value.dictionaryValue) completionHandler(value.dictionaryValue) case .failed(let error): print(error) } } } public func createLoginButton(_ frame: CGRect, withCompletionHandler completionHandler: @escaping (_ loginButton: UIView) -> ()) { let permissions: [ReadPermission] = [.publicProfile, .userFriends, .email] let loginButton = LoginButton(readPermissions: permissions) loginButton.frame = frame completionHandler(loginButton) } } В моем ViewController:Когда я использую:let facebookLoginProvider = LoginProvider(strategy: FacebookLoginStrategy()) Там написано: «FacebookLoginStrategy» недоступен из-за «внутренней» защиты уровень
K

Khuong

5 лет назад

Ответов: 3

Что такое «Vary for Traits» в Xcode 8?

Я использую классы AutoLayout и Size, но с выпуском iOS 10 и нового Xcode 8.0 появилась одна новая опция Vary for Traits. Это замена Size Classe для другой ширины и высоты устройств. При выборе флажка ширина отображается 14 компактных устройств различной ширины.При выборе флажка высота отображается 18 компактных устройств различной высоты.При выборе обоих флажков отображается различные 11 устройств компактной ширины и стандартной высоты.Как использовать эти опции? Можем ли мы использовать AutoLayout с размерными классами, такими как Xcode7.0? Если у кого-то есть глубокие знания, объясните, пожалуйста.
t

technerd

5 лет назад

Ответов: 3

Приложение отклонено из-за отсутствия описаний использования (Xcode8)

Итак, сегодня я получил это письмо, в котором говорилось, что последняя сборка моего приложения была отклонена iTunes Connect из-за отсутствия некоторых описаний использования. Если быть точным: Это приложение пытается получить доступ к конфиденциальным данным без описания использования. Info.plist приложения должен содержать ключ NSContactsUsageDescription со строковым значением, объясняющим пользователю, как приложение использует эти данные. Это приложение пытается получить доступ к конфиденциальным данным без описания использования. Info.plist приложения должен содержать ключ NSCalendarsUsageDescription со строковым значением, объясняющим пользователю, как приложение использует эти данные. Это приложение пытается получить доступ к конфиденциальным данным без описания использования. Info.plist приложения должен содержать ключ NSPhotoLibraryUsageDescription со строковым значением, объясняющим пользователю, как приложение использует эти данные. Это приложение пытается получить доступ к конфиденциальным данным без описания использования. Info.plist приложения должен содержать ключ NSBluetoothPeripheralUsageDescription со строковым значением, объясняющим пользователю, как приложение использует эти данные. Это приложение пытается получить доступ к конфиденциальным данным без описания использования. Info.plist приложения должен содержать ключ NSMicrophoneUsageDescription со строковым значением, объясняющим пользователю, как приложение использует эти данные. Это приложение пытается получить доступ к конфиденциальным данным без описания использования. Info.plist приложения должен содержать ключ NSMotionUsageDescription со строковым значением, объясняющим пользователю, как приложение использует эти данные. После того, как эти проблемы будут исправлены, вы сможете повторно доставить исправленный двоичный файл. Я понял, что они стали обязательными в iOS 10, но единственная проблема заключается в том, что мое приложение не запрашивает разрешение на доступ ни к одному из них. Я думал, что описание является обязательным только в том случае, если вы действительно запросили разрешение?*100002 *Это связано с тем, что одна из моих зависимостей (Cocoapods) может содержать некоторый код для запроса этих разрешений? Или эти описания обязательны, даже если я никогда не запрашиваю просмотр календаря, контактов и т. д. пользователей?
K

KimHafr

5 лет назад

Ответов: 6

Запросить разрешение для камеры и библиотеки в iOS 10 — Info.plist

Я реализовал WKWebView в приложении. на показанной веб-странице есть ввод файла, куда он должен импортировать изображение из фотографий. Всякий раз, когда я нажимаю на этот ввод и выбираю «Сделать фото» или «Фотобиблиотека», приложение внезапно падает, что, я полагаю, связано с тем, что приложению не хватает разрешения либо сделать фотографию, либо импортировать из библиотеки.Как отправить запрос на разрешение, когда пользователь выбирает один из упомянутых методов (сделать фото или библиотеку фотографий)?Я использую Swift 3.0 с WKWebView.
A

Alamri

5 лет назад

Ответов: 9

iOS 10 — изменения в запросе разрешений для камеры, микрофона и библиотеки фотографий, вызывающие сбой приложения

iOS 10, теперь требуется разрешение пользователя для доступа к медиатеке, фотографиям, камере и другому подобному оборудованию. Решение для этого состоит в том, чтобы добавить их ключи в info.plist с описанием для пользователя того, как мы используем их данные,Мне удалось найти только несколько ключей NSPhotoLibraryUsageDescription NSMicrophoneUsageDescription NSCameraUsageDescription Я хочу знать, есть ли еще ключи для другого оборудования, как в iOS 10 если вы не предоставили info.plist правильное описание ключей для вашего приложения произойдет сбой при сборке с использованием XCode - 8 beta.
S

Syed Ali Salman

5 лет назад

Ответов: 3

ITMS-90809: Устаревшее использование API — Apple прекратит прием приложений, использующих API UIWebView.

Вчера я загрузил свое приложение в TestFlight, и через некоторое время Apple прислала мне это предупреждение: ITMS-90809: Устаревшее использование API — Apple прекратит прием приложений, использующих API UIWebView. См. https://developer.apple.com/documentation/uikit/uiwebview для получения дополнительной информации. Дело в том, что я не использую UIWebView в своем приложении, поэтому я попытался обновить свои модули, но все равно то же самое. Кстати, это моя третья сборка на TestFlight, и Apple впервые присылает мне это. Есть идеи?ОбновлениеЭто мои капсулы:pod 'Firebase/Core' pod 'Firebase/Firestore' pod 'Firebase/MLVision' pod 'Firebase/MLVisionTextModel' pod 'SVProgressHUD' pod 'SPPermission/Camera' pod 'SPPermission/PhotoLibrary' pod 'Mantis' pod 'SwiftKeychainWrapper' pod 'SwiftyOnboard' pod 'Fabric' pod 'Crashlytics' Обновление 2 Кажется, я нашел фреймворки с проблемой.Binary file ./Pods/FirebaseMLCommon/Frameworks/FirebaseMLCommon.framework/FirebaseMLCommon matches Binary file ./Pods/Crashlytics/iOS/Crashlytics.framework/Crashlytics matches Binary file ./Pods/GoogleMobileVision/Detector/Frameworks/GoogleMobileVision.framework/GoogleMobileVision matches Итак, теперь мне нужно ждать, пока Google исправит их и обновит мои модули?
N

Nick

2 года назад

Ответов: 23

Открыть URL в веб-браузере по умолчанию

Я новичок в React-Native и хочу открыть url в браузере по умолчанию, таком как Chrome на Android и iPhone в обоих.Мы открываем URL-адрес через намерение в Android так же, как и функциональность, которую я хочу достичь.Я выполнял поиск много раз, но он дал мне результат Deeplinking.
M

Mohit Suthar

5 лет назад

Ответов: 4

как открыть определенный экран при нажатии на push-уведомление для флаттера

Я пытаюсь открыть определенный экран при нажатии на push-уведомление, и моя полезная нагрузка выглядит так: var payload = { notification: { title: notificationTitle, body: notificationMessage, click_action:"/screena",sound:"default", } }; Я получаю уведомление, но не могу поймать событие щелчка уведомления в флаттере, как его поймать. Я использую флаттер-сообщенияhttps://github.com/flutter/plugins/tree/master/packages/firebase_messagingи мой код службы push-сообщений firebase выглядит так pushMessagingService() async{ messagingreference.configure( onMessage: (Map message) { print("I am here in on message"); print(message); }, onLaunch: (Map message) { print("I am here onLaunch"); print(message); }, onResume: (Map message) { print("I am hereonResume"); print(message); }, ); messagingreference.requestNotificationPermissions( const IosNotificationSettings(sound: true, badge: true, alert: true)); messagingreference.onIosSettingsRegistered .listen((IosNotificationSettings settings) { print("Settings registered: $settings"); }); messagingreference.getToken().then((String token) async { print(token); }); } здесь я могу получить сообщение, как @xqwzts сказал в сообщении, когда мое приложение находится на переднем плане, но мой вопрос заключается в том, как перехватить событие щелчка из push-уведомления, поднятого на панели задач, и перейти к нужному экрану.
s

siva kumar

4 года назад

Ответов: 14

SwiftUI обновляет цвет заголовка панели навигации

Как изменить цвет заголовка панели навигации в SwiftUINavigationView { List{ ForEach(0..Я пробовал с .foregroundColor(.orange), но это не работает также пробовал .navigationBarTitle(Text("TEST").color(.orange))Любая помощь?
P

Prashant Tukadiya

3 года назад

Ответов: 21

2022 WebDevInsider