Post not yet marked as solved
I am trying to create an iOS app where I need to immediately know when the iPhone is unlocked.
Let's say I want to print a log on the Xcode console whenever the phone is unlocked.
From my app, how do I detect if the phone is unlocked? Some code pointers will be highly appreciated. I am a newbie in iOS/APP development.
It should work even if my app is not running.
Is it even possible to do so?
Post not yet marked as solved
Ever since I received the latest Beta update I have not been able to use CarPlay via a cord to my car (I've tried multiple cords with the same result). It has been working as expected since I bought the car a few years ago. I've tried multiple other Apple phones and they have no issue, so I know it's not my car's software. I have called apple support and they gave me instructions on how to uninstall the Beta software, which has also not been successful. I entered a ticket for this issue on April 22nd, but haven't heard anything back.
Anyone have suggestions on how I can get my CarPlay to work? or how to uninstall successfully from the Beta ios?
Post not yet marked as solved
Hello, I'll be objective: when I compile any APP in my XCode and transfer the APP to my iPhone, including the test APP "Hello world!", whether via network or USB cable, when I open the APP it simply doesn't work and the iPhone crashes. Only that. My XCode is 15.3, iPhone 14 Pro Max, IOS 17.5, macOS latest version.
Post not yet marked as solved
I am looking forward to develop an ecommerce IOS application. When I conducted my research for the same I found that offshore developers are offering solutions in quite less price compare to onshore developers. At the same time I also have some doubts over offshore development such as reliability, quality, collaboration and more.. Anyone can suggest me what would be the best in long term.
Post not yet marked as solved
Our current status is that after three minutes or more in the background, re-opening the app is a restart.
Most of the users are claiming that they were automatically redirected to the home page of our app after a certain period of inactivity in the app. I recently upgraded my Xcode version from 12.4 to 15.3. I did not experience the problem with Xcode 12.4. It is an enterprise application, and the majority of users report restart issues. It occurred at random, and the user device contained only our application, with no other app like entertainment or gaming apps.
However, I notice that many other apps are running in the background for an extended period of time (such as 20 minutes or 30 minutes). When I open the app, the same page sometimes appears in the background or the app is refreshed (like, Medium) I am not sure how they do it; I follow Apple. The rules did not do anything after entering the background. Is there anything Apple could do? How can I resolve this issue? Or it is default iOS behaviour. Please provide any documentation related to this. Please help me resolve this issue.
Note: iOS device Version 15 to 17 is the latest
Post not yet marked as solved
Hi everyone,
I'm working on an iOS app where I need to implement content filtering functionality.
I've successfully implemented a network extension target in my iOS app to filter data locally. However, I'm now aiming to extend this functionality to filter content over HTTPS. Currently, I'm utilizing a local data source for filtering, but I want to explore options for filtering content directly over HTTPS connections, like this URL: https://dns.nextdns.io/46d65d.
I've reviewed the available Apple APIs and documentation but haven't found a straightforward solution for HTTPS content filtering. Can anyone provide guidance or suggest any relevant resources for implementing HTTPS content filtering within a network extension target on iOS?
Any help or insights would be greatly appreciated!
Thank you in advance!
Post not yet marked as solved
I want to change the display language, particularly for week and the year and date on MultiDatePicker.
By adjusting the locale, the year and date can be changed.
However, I'm unable to change the display for week .
I've tried several methods, such as setting the calendar and adjusting the time zone, but none of them seem to work.
Are there any good way to solve it?
Post not yet marked as solved
I created a PWA that requires access to users' geolocation to perform a certain action in the system. The correct operation would be the user opens the application, and then the operating system prompts them to allow sharing their exact location with the PWA. However, this is not happening with a few users who have iPhone 11 or XR.
I tested it on iPhones 14, 13, 11 Pro, and even iPhone 6, and it works as expected. I directly spoke with a user who was experiencing the problem and conducted some tests.
I checked if location access was allowed in the settings.
I verified if Safari was accepting with the option to always ask selected.
In the settings of my system's website, I checked if location access was allowed with the option to always ask chosen.
We changed all prompting options to allow.
We opened the following site https://whatpwacando.today/ and found that geolocation was also not possible.
Everything indicates that the issue lies with these users' phones; however, other geolocation methods work fine, as other geolocation apps function properly. This leads me to think that it might be a problem with Safari not working properly with the HTML Geolocation API.
I'm not sure if there are any more advanced settings that could help or if anyone else has encountered this issue.
Post not yet marked as solved
I added debug break point to the first line of MyDeviceActivityMonitor.swift, it never got trigger.
I am able to launch the app, select discouraged and encouraged app.
discouraged apps are getting restricted which is expected. but device activity extension is never called.
I have all the permission and certificate. I created an app group.
import SwiftUI
import FamilyControls
import ManagedSettings
@main
struct GetALifeApp: App {
@UIApplicationDelegateAdaptor(AppDelegate.self) private var appDelegate
@StateObject var model = MyModel.shared
@StateObject var store = ManagedSettingsStore()
var body: some Scene {
WindowGroup {
ContentView()
.environmentObject(model)
.environmentObject(store)
}
}
}
class AppDelegate: NSObject, UIApplicationDelegate {
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? = nil) -> Bool {
initiateAsyncSetup()
MySchedule.setSchedule()
return true
}
private func initiateAsyncSetup() {
Task {
do {
try await AuthorizationCenter.shared.requestAuthorization(for: .individual)
} catch {
print("Error during asynchronous setup: \(error)")
}
}
}
}
import Foundation
import FamilyControls
import ManagedSettings
private let _MyModel = MyModel()
class MyModel: ObservableObject {
let store = ManagedSettingsStore()
@Published var selectionToDiscourage: FamilyActivitySelection
@Published var selectionToEncourage: FamilyActivitySelection
init() {
selectionToDiscourage = FamilyActivitySelection()
selectionToEncourage = FamilyActivitySelection()
}
class var shared: MyModel {
return _MyModel
}
func setShieldRestrictions() {
let applications = MyModel.shared.selectionToDiscourage
store.shield.applications = applications.applicationTokens.isEmpty ? nil : applications.applicationTokens
store.shield.applicationCategories = applications.categoryTokens.isEmpty
? nil
: ShieldSettings.ActivityCategoryPolicy.specific(applications.categoryTokens)
}
}
import Foundation
import DeviceActivity
extension DeviceActivityName {
static let daily = Self("daily")
}
extension DeviceActivityEvent.Name {
static let encouraged = Self("encouraged")
}
let schedule = DeviceActivitySchedule(
intervalStart: DateComponents(hour: 0, minute: 0),
intervalEnd: DateComponents(hour: 23, minute: 59),
repeats: true
)
class MySchedule {
static public func setSchedule() {
print("Setting schedule...")
print("Hour is: ", Calendar.current.dateComponents([.hour, .minute], from: Date()).hour!)
let events: [DeviceActivityEvent.Name: DeviceActivityEvent] = [
.encouraged: DeviceActivityEvent(
applications: MyModel.shared.selectionToEncourage.applicationTokens,
threshold: DateComponents(second: 2)
)
]
let center = DeviceActivityCenter()
do {
print("Try to start monitoring...")
print(events)
try center.startMonitoring(.daily, during: schedule, events: events)
} catch {
print("Error monitoring schedule: ", error)
}
}
}
import SwiftUI
struct ContentView: View {
@State private var isDiscouragedPresented = false
@State private var isEncouragedPresented = false
@EnvironmentObject var model: MyModel
var body: some View {
VStack {
Button("Select Apps to Discourage") {
isDiscouragedPresented = true
}
.familyActivityPicker(isPresented: $isDiscouragedPresented, selection: $model.selectionToDiscourage)
Button("Select Apps to Encourage") {
isEncouragedPresented = true
}
.familyActivityPicker(isPresented: $isEncouragedPresented, selection: $model.selectionToEncourage)
}
.onChange(of: model.selectionToDiscourage) {
MyModel.shared.setShieldRestrictions()
}
.onChange(of: model.selectionToEncourage) {
MySchedule.setSchedule()
}
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
.environmentObject(MyModel())
}
}
import Foundation
import DeviceActivity
import ManagedSettings
class MyDeviceActivityMonitor: DeviceActivityMonitor {
let store = ManagedSettingsStore()
override func intervalDidStart(for activity: DeviceActivityName) {
print("intervalDidStart")
super.intervalDidStart(for: activity)
store.shield.applications = nil
print("intervalDidStart")
}
override func intervalDidEnd(for activity: DeviceActivityName) {
super.intervalDidEnd(for: activity)
}
override func eventDidReachThreshold(_ event: DeviceActivityEvent.Name, activity: DeviceActivityName) {
super.eventDidReachThreshold(event, activity: activity)
print("used encouraged")
store.shield.applications = nil
}
override func intervalWillStartWarning(for activity: DeviceActivityName) {
super.intervalWillStartWarning(for: activity)
// Handle the warning before the interval starts.
}
override func intervalWillEndWarning(for activity: DeviceActivityName) {
super.intervalWillEndWarning(for: activity)
// Handle the warning before the interval ends.
}
override func eventWillReachThresholdWarning(_ event: DeviceActivityEvent.Name, activity: DeviceActivityName) {
super.eventWillReachThresholdWarning(event, activity: activity)
// Handle the warning before the event reaches its threshold.
}
}
Post not yet marked as solved
I am new to swift. This is my first app. What an i doing wrong.
Device activity monitor extension is never being called.
When i launch the app, I am able to pick the discouraged and encouraged apps.
It immediately restrict the discouraged app which is expected. But the extension is never called.
import SwiftUI
import FamilyControls
import ManagedSettings
@main
struct GetALifeApp: App {
@UIApplicationDelegateAdaptor(AppDelegate.self) private var appDelegate
@StateObject var model = MyModel.shared
@StateObject var store = ManagedSettingsStore()
var body: some Scene {
WindowGroup {
ContentView()
.environmentObject(model)
.environmentObject(store)
}
}
}
class AppDelegate: NSObject, UIApplicationDelegate {
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? = nil) -> Bool {
initiateAsyncSetup()
return true
}
private func initiateAsyncSetup() {
Task {
do {
try await AuthorizationCenter.shared.requestAuthorization(for: .individual)
MySchedule.setSchedule()
} catch {
print("Error during asynchronous setup: \(error)")
}
}
}
}
import Foundation
import FamilyControls
import ManagedSettings
private let _MyModel = MyModel()
class MyModel: ObservableObject {
let store = ManagedSettingsStore()
@Published var selectionToDiscourage: FamilyActivitySelection
@Published var selectionToEncourage: FamilyActivitySelection
init() {
selectionToDiscourage = FamilyActivitySelection()
selectionToEncourage = FamilyActivitySelection()
}
class var shared: MyModel {
return _MyModel
}
func setShieldRestrictions() {
let applications = MyModel.shared.selectionToDiscourage
store.shield.applications = applications.applicationTokens.isEmpty ? nil : applications.applicationTokens
store.shield.applicationCategories = applications.categoryTokens.isEmpty
? nil
: ShieldSettings.ActivityCategoryPolicy.specific(applications.categoryTokens)
}
}
import Foundation
import DeviceActivity
extension DeviceActivityName {
static let daily = Self("daily")
}
extension DeviceActivityEvent.Name {
static let encouraged = Self("encouraged")
}
let schedule = DeviceActivitySchedule(
intervalStart: DateComponents(hour: 0, minute: 0),
intervalEnd: DateComponents(hour: 23, minute: 59),
repeats: true
)
class MySchedule {
static public func setSchedule() {
print("Setting schedule...")
print("Hour is: ", Calendar.current.dateComponents([.hour, .minute], from: Date()).hour!)
let events: [DeviceActivityEvent.Name: DeviceActivityEvent] = [
.encouraged: DeviceActivityEvent(
applications: MyModel.shared.selectionToEncourage.applicationTokens,
threshold: DateComponents(second: 2)
)
]
let center = DeviceActivityCenter()
do {
print("Try to start monitoring...")
try center.startMonitoring(.daily, during: schedule, events: events)
} catch {
print("Error monitoring schedule: ", error)
}
}
}
import SwiftUI
struct ContentView: View {
@State private var isDiscouragedPresented = false
@State private var isEncouragedPresented = false
@EnvironmentObject var model: MyModel
var body: some View {
VStack {
Button("Select Apps to Discourage") {
isDiscouragedPresented = true
}
.familyActivityPicker(isPresented: $isDiscouragedPresented, selection: $model.selectionToDiscourage)
Button("Select Apps to Encourage") {
isEncouragedPresented = true
}
.familyActivityPicker(isPresented: $isEncouragedPresented, selection: $model.selectionToEncourage)
}
.onChange(of: model.selectionToDiscourage) { newSelection in
MyModel.shared.setShieldRestrictions()
}
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
.environmentObject(MyModel())
}
}
import Foundation
import DeviceActivity
import ManagedSettings
class MyDeviceActivityMonitor: DeviceActivityMonitor {
let store = ManagedSettingsStore()
override func intervalDidStart(for activity: DeviceActivityName) {
print("intervalDidStart")
super.intervalDidStart(for: activity)
store.shield.applications = nil
print("intervalDidStart")
}
override func intervalDidEnd(for activity: DeviceActivityName) {
super.intervalDidEnd(for: activity)
}
override func eventDidReachThreshold(_ event: DeviceActivityEvent.Name, activity: DeviceActivityName) {
super.eventDidReachThreshold(event, activity: activity)
print("used encouraged")
store.shield.applications = nil
}
override func intervalWillStartWarning(for activity: DeviceActivityName) {
super.intervalWillStartWarning(for: activity)
// Handle the warning before the interval starts.
}
override func intervalWillEndWarning(for activity: DeviceActivityName) {
super.intervalWillEndWarning(for: activity)
// Handle the warning before the interval ends.
}
override func eventWillReachThresholdWarning(_ event: DeviceActivityEvent.Name, activity: DeviceActivityName) {
super.eventWillReachThresholdWarning(event, activity: activity)
// Handle the warning before the event reaches its threshold.
}
}
Post not yet marked as solved
Summary
Hello Apple Developers,
I've made a custom UITableViewCell that includes a UITextField and UILabel. When I run the simulation the UITableViewCells pop up with the UILabel and the UITextField, but the UITextField isn't clickable so the user can't enter information. Please help me figure out the problem.
Thank You!
Sampson
What I want:
What I have:
Screenshot Details:
As you can see when I tap on the cell the UITextField isn't selected. I even added placeholder text to the UITextField to see if I am selecting the UITextField and the keyboard just isn't popping up, but still nothing.
Relevant Code:
UHTextField
import UIKit
class UHTextField: UITextField {
override init(frame: CGRect) {
super.init(frame: frame)
configure()
}
required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
convenience init(placeholder: String) {
self.init(frame: .zero)
self.placeholder = placeholder
}
private func configure() {
translatesAutoresizingMaskIntoConstraints = false
borderStyle = .none
textColor = .label
tintColor = .blue
textAlignment = .left
font = UIFont.preferredFont(forTextStyle: .body)
adjustsFontSizeToFitWidth = true
minimumFontSize = 12
backgroundColor = .tertiarySystemBackground
autocorrectionType = .no
}
}
UHTableTextFieldCell
import UIKit
class UHTableTextFieldCell: UITableViewCell, UITextFieldDelegate {
static let reuseID = "TextFieldCell"
let titleLabel = UHTitleLabel(textAlignment: .center, fontSize: 16, textColor: .label)
let tableTextField = UHTextField()
override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
super.init(style: style, reuseIdentifier: reuseIdentifier)
configure()
}
required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
func set(title: String) {
titleLabel.text = title
tableTextField.placeholder = "Enter " + title
}
private func configure() {
addSubviews(titleLabel, tableTextField)
let padding: CGFloat = 12
NSLayoutConstraint.activate([
titleLabel.centerYAnchor.constraint(equalTo: centerYAnchor),
titleLabel.leadingAnchor.constraint(equalTo: leadingAnchor, constant: padding),
titleLabel.heightAnchor.constraint(equalToConstant: 20),
titleLabel.widthAnchor.constraint(equalToConstant: 80),
tableTextField.centerYAnchor.constraint(equalTo: centerYAnchor),
tableTextField.leadingAnchor.constraint(equalTo: titleLabel.trailingAnchor, constant: 24),
tableTextField.trailingAnchor.constraint(equalTo: trailingAnchor, constant: -padding),
tableTextField.heightAnchor.constraint(equalToConstant: 20)
])
}
}
LoginViewController
class LoginViewController: UIViewController, UITextFieldDelegate {
let tableView = UITableView()
let loginTableTitle = ["Username", "Password"]
override func viewDidLoad() {
super.viewDidLoad()
configureTableView()
updateUI()
createDismissKeyboardTapGesture()
}
func createDismissKeyboardTapGesture() {
// create the tap gesture recognizer
let tap = UITapGestureRecognizer(target: self.view, action: #selector(UIView.endEditing))
// add it to the view (Could also add this to an image or anything)
view.addGestureRecognizer(tap)
}
func configureTableView() {
view.addSubview(tableView)
tableView.layer.borderWidth = 1
tableView.layer.borderColor = UIColor.systemBackground.cgColor
tableView.layer.cornerRadius = 10
tableView.clipsToBounds = true
tableView.rowHeight = 44
tableView.delegate = self
tableView.dataSource = self
tableView.translatesAutoresizingMaskIntoConstraints = false
tableView.removeExcessCells()
NSLayoutConstraint.activate([
tableView.topAnchor.constraint(equalTo: loginTitleLabel.bottomAnchor, constant: padding),
tableView.leadingAnchor.constraint(equalTo: view.leadingAnchor, constant: padding),
tableView.trailingAnchor.constraint(equalTo: view.trailingAnchor, constant: -padding),
tableView.heightAnchor.constraint(equalToConstant: 88)
])
tableView.register(UHTableTextFieldCell.self, forCellReuseIdentifier: UHTableTextFieldCell.reuseID)
}
func updateUI() {
DispatchQueue.main.async {
self.tableView.reloadData()
self.view.bringSubviewToFront(self.tableView)
}
}
}
extension LoginViewController: UITableViewDelegate, UITableViewDataSource{
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 2
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: UHTableTextFieldCell.reuseID, for: indexPath) as! UHTableTextFieldCell
let titles = loginTableTitle[indexPath.row]
cell.set(title: titles)
cell.titleLabel.font = UIFont.systemFont(ofSize: 16, weight: .bold)
cell.tableTextField.delegate = self
return cell
}
}
Again thank you all so much for your help. If you need more clarification on this let me know.
Post not yet marked as solved
I have added the Journaling Suggestions capability and now I am trying to import journaling suggestions in my app so I can use it, but I am getting the ' No such Module' error, I have quit Xcode and opened it again, I am getting the same issue . I am running Xcode version 15.3
Hello.
I'm trying to copy files to iOS device into my app's data container from mac and I can't get user name right. What is my user name? I have tried user name as I see it in Settings and also tried my apple ID with no luck.
I use the following command:
xcrun devicectl device copy to --device VALID_DEVICE_ID --domain-type appDataContainer --user "WHAT SHOULD BE HERE?" --domain-identifier VALID_BUNDLE_ID --source Data.zip --destination Documents/Data.zip
Thank you in advance!
Post not yet marked as solved
I am trying to disable the screenshot on iOS app but apple does not expose any api for this. Due to which I added a workaround when iPhone will try to take screenshot we have a textfield in secured way which will cover the whole screen and screenshot will be blank. Does anyone tried the same approach to avoid screenshot? if yes did apple act against those application or they reject if they find.
It will be great help if Apple can provide us some insight on it.
Post not yet marked as solved
In order to fetch the unexpected pop-up dialog window when executing e2e tests. For example:
I write a simple Apple script get_popup_windows.scpt as follows:
tell application "System Events"
tell process "SystemUIServer"
set securityAlertWindows to (every window whose subrole is "AXDialog")
set securityAlertTitles to {}
repeat with securityAlertWindow in securityAlertWindows
set securityAlertTitle to (securityAlertWindow's title as text)
set end of securityAlertTitles to securityAlertTitle
end repeat
end tell
end tell
return securityAlertTitles
However, when I execute osascript get_popup_windows.scpt
It returns empty even when there is a popup window in my mac.
Does anyone know the reason? Thanks for help.
Will
Post not yet marked as solved
Hello,
I am working on a fairly complex iPhone app that controls the front built-in wide angle camera. I need to take and display a sequence of photos that cover the whole range of focus value available.
Here is how I do it :
call setExposureModeCustom to set the first lens position
wait for the completionHandler to be called back
capture a photo
do it again for the next lens position.
etc.
This works fine, but it takes longer than I expected for the completionHandler to be called back.
From what I've seen, the delay scales with the exposure duration.
When I set the exposure duration to the max value:
on the iPhone 14 Pro, it takes about 3 seconds (3 times the max exposure)
on the iPhone 8 1.3s (4 times the max exposure).
I was expecting a delay of two times the exposure duration: take a photo, throw one away while changing lens position, take the next photo, etc. but this takes more than that.
I also tried the same thing with changing the ISO instead of the focus position and I get the same kind of delays. Also, I do not think the problem is linked to the way I process the images because I get the same delay even if I do nothing with the output.
Is there something I could do to make things go faster for this use-case ?
Any input would be appreciated,
Thanks
I created a minimal testing app to reproduce the issue :
import Foundation
import AVFoundation
class Main:NSObject, AVCaptureVideoDataOutputSampleBufferDelegate {
let dispatchQueue = DispatchQueue(label:"VideoQueue", qos: .userInitiated)
let session:AVCaptureSession
let videoDevice:AVCaptureDevice
var focus:Float = 0
override init(){
session = AVCaptureSession()
session.beginConfiguration()
session.sessionPreset = .photo
videoDevice = AVCaptureDevice.default(.builtInWideAngleCamera, for: .video, position: .back)!
super.init()
let videoDeviceInput = try! AVCaptureDeviceInput(device: videoDevice)
session.addInput(videoDeviceInput)
let videoDataOutput = AVCaptureVideoDataOutput()
if session.canAddOutput(videoDataOutput) {
session.addOutput(videoDataOutput)
videoDataOutput.videoSettings = [kCVPixelBufferPixelFormatTypeKey as String: kCVPixelFormatType_32BGRA ]
videoDataOutput.setSampleBufferDelegate(self, queue: dispatchQueue)
}
session.commitConfiguration()
dispatchQueue.async {
self.startSession()
}
}
func startSession(){
session.startRunning()
//lock max exposure duration
try! videoDevice.lockForConfiguration()
let exposure = videoDevice.activeFormat.maxExposureDuration.seconds * 0.5
print("set max exposure", exposure)
videoDevice.setExposureModeCustom(duration: CMTime(seconds: exposure, preferredTimescale: 1000), iso: videoDevice.activeFormat.minISO){ time in
print("did set max exposure")
self.changeFocus()
}
videoDevice.unlockForConfiguration()
}
func changeFocus(){
let date = Date.now
print("set focus", focus)
try! videoDevice.lockForConfiguration()
videoDevice.setFocusModeLocked(lensPosition: focus){ time in
let dt = abs(date.timeIntervalSinceNow)
print("did set focus - took:", dt, "frames:", dt/self.videoDevice.exposureDuration.seconds)
self.next()
}
videoDevice.unlockForConfiguration()
}
func next(){
focus += 0.02
if focus > 1 {
print("done")
return
}
changeFocus()
}
func captureOutput(_ output: AVCaptureOutput, didOutput sampleBuffer: CMSampleBuffer, from connection: AVCaptureConnection){
print("did receive video frame")
}
}
Post not yet marked as solved
When archiving & exporting App with Xcode 13.
The Frameworks of the created app will have their Info.plist modified.
CFBundleShortVersionString is being changed to have the same value as the application version.
Steps to reproduce:
Create iOS App project with v1.0.0
Add dynamic framework dependencies. ex: Framework A v3.0.0, Framework B v12.0.0.
Archive Project.
Distribute app AppStore Connect
Export
Finish the rest of the process with default values.
Investigate generated IPA file
Investigate .app file inside IPA
Investigate frameworks inside .app file.
CFBundleShortVersionString of all the frameworks is 1.0.0
Post not yet marked as solved
I have my app already in live before the privacy manifest introduced. Now, I want to migrate from cocoapods to Swift Package Manager. Will this be considered like adding the third party SDKs as new ones or will it be considered existing ones? So far I have not received any emails from Apple regarding the privacy manifest. I do not want any issues with the privacy manifest.
Post not yet marked as solved
Hello everyone,
I hope you're all doing well. I'm reaching out to seek guidance on automating a task that involves sending 50 messages simultaneously using data stored in a Google Sheets document.
Here's a brief overview of what I'm trying to achieve:
I have a Google Sheets document containing pre-written messages along with associated recipient phone numbers.
My goal is to automate the process of retrieving this data and sending the corresponding messages to each recipient in one click.
While I'm familiar with using Shortcuts on my iPhone to automate certain tasks, I'm unsure about the best approach to handle this particular scenario. I've explored options such as using the "Get Content of URL" action to fetch data from the Google Sheets document, but I'm unsure how to proceed from there to automate the message sending process efficiently.
If anyone has experience or insights on how to accomplish this task effectively using Shortcuts or any other automation tool, I would greatly appreciate your guidance. My aim is to streamline this process and save time by sending these messages automatically with just one click.
Thank you in advance for any assistance or suggestions you can provide!
Post not yet marked as solved
This is a bug I have been trying to identify and fix for more than 3 weeks.
This bug mostly happens in production.
The stack trace doesn't help that much, because it looks like the app is crashing due to some SwiftUI internal methods.
I tried everything in my power to debug and find this bug, still nothing.
Due to the lack of 100% reproducibility, it made me think that this bug is either memory-pressure related or Swift concurrency related.
When does it happen:
This bug happens when presenting a SwiftUI modal (UIViewControllerRepresentable)[A]
which in terms presents a UIHostingController modal[B]
which then presents a modally a SwiftUI sheet [C]
The bug happens somewhere around staying in [C] or after dismissing it.
Context:
The app lifecycle is SwiftUI.
The main SwiftUI screen in the app body is a UIViewControllerRepresentable containing a UISplitViewController.
Here is a screenshot from the crash log in Xcode.
Anyone facing a similar issue?