I'm developing two native apps and one is a authentication app and other one is business app. In the main flow if buisness application is on the foreground and did nothing for at least 10 minutes it will automatically time out and redirect to the autentication app for token refresh. In this flow universal link redirect to the authetication app without opening Safari.
But if i execute the below flow buissness app redirect to the Safari.
Buisness App In Foregorund → Displaying a OS screen while app is in Foreground(Like Push Notification Center) → On this satate leave device for 10 minutes → Buisness app will automatically timeout and rediret to Safari(In safari 「NoSuchKey The specified key does not exist.」message is displaying but authentication app Universal link Start button is showing) → After click the Universal Link start button in Safari Authentication App open.
I use the below code to start the Universal Link:
if let url = URL(string: path) {
UIApplication.shared.open(url)
}
So i would like to know is there a special reason that when Displaying a OS screen while app is in Foreground(Like Push Notification Center) affect the normal flow of Universal redirection to another app?
Post
Replies
Boosts
Views
Activity
I'm trying to handle the error in NEHotspotConfigurationManager connection method.When i try even OS network connect dialog showing with "Cannot connect" response return as "Success".
In my flow i'm trying to connect to a private network. First i connect using below code and then set the IP Address,SubNetMask,Router and DNS server address manually to already added Wifi by running below code. I'm doing this manually because as i understand you cannot set the IP Address,SubNetMask,Router and DNS server address using Swift.
https://forums.developer.apple.com/forums/thread/96834?page=2
I read the above thread and what i can understand from that is it's a bug in the os method. So does this problem fixed on latest iOS version? or is there a way to handle this problem?
Error handler code→
let eapSetting = NEHotspotEAPSettings()
eapSetting.username = self.username
eapSetting.password = self.password
eapSetting.supportedEAPTypes = [NEHotspotEAPSettings.EAPType.EAPPEAP.rawValue as NSNumber]
eapSetting.trustedServerNames = ["ABC"]
NEHotspotConfigurationManager.shared.removeConfiguration(forSSID: self.ssid)
let hotspotConfiguration = NEHotspotConfiguration(ssid: self.ssid, eapSettings: eapSetting)
manager.apply(hotspotConfiguration){ (error) in
if let error = error {
print("Error")
return
} else {
print("Success")
return
}
}
Environment→ ・Device: iPad 9th generation ・OS:**iOS17.5.1 ・Printer model:EPSON PX-S730
Current issues→
01). After canceling a print job in the Print Center, the Print Center screen on the iPad does not close.
02). When the printer is turned on and a new print job is sent, the Print Center shows the ongoing waiting job instead of proceeding with printing.
Problem Description→
The AirPrint feature on an iPad 9th generation running iOS 17.5.1 is being used with an EPSON PX-S730 printer. When sending a print job while the printer is off, the Print Center shows the ongoing printing job. If the print job is canceled in the Print Center, the Print Center screen on the iPad does not close. After turning on the printer and sending the print job again, the Print Center shows the ongoing waiting job.
What I want→
The Print Center screen on the iPad to close automatically after canceling a print job.
Test code:
Note: printController.print response is completed but Print Center status is waiting
let printInfo = UIPrintInfo(dictionary: nil)
printInfo.jobName = "Print Job"
printController.printInfo = printInfo
let pdfURL = Bundle.main.url(forResource: "sample", withExtension: "pdf")!
printController.printingItem = pdfURL
let printer = UIPrinter(url: printerUrl)
printController.print(to: printer, completionHandler: { [self] printController, completed, error in
if(error != nil){
print("error").
}else if completed{
print("completed") //this scenario handles completion response
}else{
print("cancel")
}
})
Environment→ ・Device: iPad 9th generation ・OS:**iOS17.5.1 ・Printer model:EPSON PX-S730
Current issues→
An error message is not returned from the printer if a print job is sent while the printer is off.
Problem Description→
The AirPrint feature on an iPad 9th generation running iOS 17.5.1 is being used with an EPSON PX-S730 printer. When sending a print job while the printer is off, the Print Center shows the ongoing printing job, but the printing cannot be executed because the printer is off.
What I want→
I would like an error to be returned when I submit a printing job while the printer is off.
Test code:
Note: printController.print response is completed but Print Center status is printing
let printInfo = UIPrintInfo(dictionary: nil)
printInfo.jobName = "Print Job"
printController.printInfo = printInfo
let pdfURL = Bundle.main.url(forResource: "sample", withExtension: "pdf")!
printController.printingItem = pdfURL
let printer = UIPrinter(url: printerUrl)
printController.print(to: printer, completionHandler: { [self] printController, completed, error in
if(error != nil){
print("error").
}else if completed{
print("completed"). //this scenario handles completion response
}else{
print("cancel")
}
})
I’m creating a hybrid app using Swift and Angular. Angular content is loading on top of the Native Swift WkWebView.
Starting from iPad 10th generation only in the app initial launch header area become invisible(invisible means header text becomes white). But once I send the app to background and return to foreground header text becomes black and it will show without problem. I would really like to know whether this is a OS problem and if so is there any pro-grammatical solution for this?
if anyone can guide me to proper way fix this much a appreciated!!!
Environment:
・Device: iPad 10th generation
・OS:iPad OS 17.3.1
・Native App : Swift 5
Environment→ ・Device: iPad 9th generation ・OS:iPadOS17.1、iPadOS16.6 ・Printer model:EPSON PX-S730
What I want→ I want to determine whether the printer and iPad are connected to the same Wi-Fi network.
Current issues→ When I run the below code on an iOS17 iPad, contactPrinter() becomes true even though you are not connected to the same network as the printer.
Problem Description→
I want to pass the URL of the printer that I have set in advance and print directly from the device to the printer.
So in iOS 16 when i execute the below code, without connecting to the same network as printer, return value of the "contactPrinter" method is FALSE.
once i update to iOS 17 and ran the same code with the same conditions(iPad and printer not connected to same network), return value becomes TRUE.
[I'm using "contactPrinter" method because after update to iOS 17 i was able to successfully launch a print job even if your device isn't connected to the same network as your printer.But in iOS 16 it return as an Error.]
Is this a bug in iOS 17? Or is the method used incorrectly?
Test code:
let printer = UIPrinter(url: URL(string: "printer url")!)
printer.contactPrinter { (available) -> Void in
if (available) { // iOS17.1:true, iOS16.6:false
print("connected to printer")
printController.print(to: printer, completionHandler: printCompletionHandler)
} else {
print("not connected to printer")
}
}
Environment→
・Device: iPad 9th generation
・OS:**iOS17.0.3
・Printer model:EPSON PX-S730
What I want→
I would like to return an error when I submit a printing job, if the printer is not properly connected to the same WIFI as iPad(iOS17).
Current issues→
When I run the below code in iOS17, I was able to successfully submit a print job to printer and, printer returns completed(true) as the result. In iOS16 print job return as an error to the same below code.
Problem Description→
In iOS 16.6.1 when you know the correct printer access URL and submit a print job without connecting to the same WIFI as the printer, job return as an error.(return to the error code segment in the below code)
But after I updated the app to iOS 17.0.3 and run the same job, it's not returning as an error.(it returns to the completed block in the below code segment and completed Boolean value is true. )
When you check the "Print Summary" window in iPad, the status of the print job is Waiting.
So I would like to handle this process in the same way like iOS16 in iOS17. I would like to Print Job to return as a error when printer and iPad not connected to same WIFI(error like "cannot connect to the printer")
Test code:
let printInfo = UIPrintInfo(dictionary: nil)
printInfo.jobName = "Print Job"
printController.printInfo = printInfo
let pdfURL = Bundle.main.url(forResource: "sample", withExtension: "pdf")!
printController.printingItem = pdfURL
let printer = UIPrinter(url: printerUrl)
printController.print(to: printer, completionHandler: { [self] printController, completed, error in
if(error != nil){
print("error")
}else if completed{
print("completed")
}else{
print("cancel")
}
})
Does anyone knows if it's a bug in iOS17 or am I missing something?
Environment→
・Device: iPad 9th generation
・OS: iOS17.0.3
・Printer model: EPSON PX-S730
What I want→
I would like to programmatically use the AirPrint API to directly print from my application to a selected printer specifying the printing as single-side
Current issues →
After updating the iOS from 16.6.1 to 17 version, when printing programmatically using the AirPrint API, even setting the print options as single-side, it end up printing on double- side.
Issue description→
When I run the code below on iOS16.6.1, it prints on single-side,** but after updating to iOS17.0.3, It’s always printing on double-sides.**
Also, the Apple Developer Documentation says that the print method disables duplex printing and it's describe in below URL:
https://developer.apple.com/documentation/uikit/uiprintinteractioncontroller/1618174-print
Test code:
let printInfo = UIPrintInfo(dictionary: nil)
printInfo.jobName = "Print Job"
printController.printInfo = printInfo
let pdfURL = Bundle.main.url(forResource: "sample", withExtension: "pdf")!
printController.printingItem = pdfURL
let printer = UIPrinter(url: printerUrl)
printController.print(to: printer, completionHandler: { [self] printController, completed, error in
if(error != nil){
print("error")
}else if completed{
print("completed")
}else{
print("cancel")
}
})
Does anyone knows if it's a bug in iOS17 or am I missing something?
I want to use the AirPrint API, which is a standard OS printing function, programmatically on an iOS application to print directly to a printer by specifying single-sided printing instead of double-sided printing for the first print after the OS is initialised.
〇Verification environment
・Device: iPad 9 generation
・OS:OS16.6
・Printer model: EPSON PX-S730 / Brother MFC-J7300CDW / Canon G5030 / EPSON PX-M791FT
※All printers used for verification support AirPrint and are capable of duplex printing.
〇Issue
The duplex printing option can be specified from the program using the AirPrint API property "duplex",
However, when printing is executed from the program, the specified print option "duplex printing" is not reflected in the AirPrint API.
〇Verification results
Installed the developed print verification app on the device in factory default state, and executed the print process from the app to the printer.
(1st time) Set the property "duplex printing" = duplex or single-sided in the AirPrint API of iOS → In both cases, printing was performed on both sides.
(2nd and subsequent times) Set the property "duplex printing" = duplex or single-sided in the AirPrint API of iOS → In both cases, printing is done on one side.
〇Source Code
The print verification application we developed uses the UIPrintInteractionController class in Swift to specify the printing options for duplex printing.
We believe we can specify this by setting "info.duplex = UIPrintInfo.Duplex.none" in the following source code and adding it to printInfo.
func buttonClick(_ sender: Any) {
let printController = UIPrintInteractionController.shared
let printInfo = UIPrintInfo(dictionary: nil)
printInfo.jobName = "PrintJob from PrintTestApp"
// color
printInfo.outputType = UIPrintInfo.OutputType.general
// duplex mode for the print
printInfo.duplex = UIPrintInfo.Duplex.none // set the single side option
printController.printInfo = printInfo
// PDF printing in project folder
printController.printingItem = Bundle.main.url(forResource: "sample", withExtension: "pdf")!
// printer settings
let printer = UIPrinter(url: URL(string: "ipps://XXXXXXX/ipp/print")!)
// direct printing
printController.print(to: printer, completionHandler: {
controller, completed, error in
guard error == nil else {
return
}
})
}
I'm using UIPrintInteractionController(AirPrint) to print documents in my swift application. I was able to print the documents using my application, but all of them are printing in one-sided. Now i want to add a double-sided printing as an option to my application. After some research i found that it can be implement by adding info.duplex = UIPrintInfo.Duplex.longEdge to printInfo.
I tried it using the below code.
private var printController = UIPrintInteractionController.shared
let info = UIPrintInfo.printInfo()
info.duplex = UIPrintInfo.Duplex.longEdge <<<<<<
info.jobName = "XXXPrint"
info.orientation = .portrait
printController.printInfo = info
printController.print(to: printer, completionHandler: { [self]
controller, completed, error in
if(error != nil){
print("successfully")
}else{
print("Printing error: \(error.localizedDescription)")
}
}
But whether i set it in the code and run my application it is printing the pages by one-sided.
So if some one can guide me to double-sided printing workable solution highly appreciated!!
I want to connect to Wi-Fi programmatically using swift in my iPad application and I want to create according to bellow flow.
Enter the network name programmatically
Set the programmatically "WAP2-Enterprise" for security.
Set username/password.
A certificate popup will appear, so tap "Trust".
"Turn on the following information." otherwise off.
Automatic connection
Restrict IP address tracking
Set the programmatically IPV4 address below.
Configure ID: Manual
IP address: 192.***.***.***
For tablets, ○○: 1 to 20
Subnet mask: 255.255.255.0
Router: 192.***.***.***
Configure DNS server(Set the programmatically)
Manual
Add server: 8.8.8.8
HTTP proxy(Set the programmatically)
Configure proxy: off
if anyone you can guide me to proper way much a appreciated!!!
I would like to know what errors can be handled by the UIPrintInteractionController.CompletionHandler.According to the UIKit documentation, four constants were defined for UIPrintError.Code, but that is very rough and I don't know which error codes are returned at specific times.
When I print from my iPad using AirPrint, can I get detailed errors such as out of ink, paper jam, or insufficient paper?
Also, is there another way to get and handle print errors other than using the UIPrintInteractionController.CompletionHandler?
I have deployed a angular site with nginx server in GKE and set the SSL authentication. I installed the client certificate using Mobileiron Cloud MDM in my ipad. Then i was able to access and validate the certificate using Safari . But when i trying to do the same thing using my application WkWebView it always giving me the "400 Bad Request" error. After some search i realize that we cannot acces the certificates which installed in the Apple Key chain and it they can be only access by applications Safari or apple Mail app. As a solution for this problem then i set the client certifcate inside App Bundle and was able to do the authentication by importing it using "SecPKCS12Import" and do the authentication.
let securityError = SecPKCS12Import(data as NSData,
[ kSecImportExportPassphrase as String : password ] as CFDictionary,
&_items);
Now WKwebView is loading only if authentication is correct. But for this methos i need to upload the client certificate to my App Bundle.
So i would like to know, is there a way to do the SSL authentication in WKWebview without bundeling the client certificate to app bundle. I would like a way that i can deploy it in a remote way like Mobileiron Cloud MDM(i already have the subscription so there is no probles accesing all Mobileriron services.) and access that certifcate to authenticate in the WKWebview url loading.
We are using AVFoundation to create a Barcode/Qrcode reader.In there we created a Qr/Barcode detection square area to show in the middle of the ipad/iphone screen with red color boarder and we were able to read
below types Barcode/Qrcode in ios 15.4 within that detection area.
Below are the barcode types that we read.
private let supportedCodeTypes = [
AVMetadataObject.ObjectType.codabar, AVMetadataObject.ObjectType.qr, AVMetadataObject.ObjectType.upce,
AVMetadataObject.ObjectType.code39Mod43, AVMetadataObject.ObjectType.code39, AVMetadataObject.ObjectType.code93,
AVMetadataObject.ObjectType.code128,
AVMetadataObject.ObjectType.ean8,
AVMetadataObject.ObjectType.ean13,
AVMetadataObject.ObjectType.aztec, AVMetadataObject.ObjectType.pdf417, AVMetadataObject.ObjectType.itf14,
AVMetadataObject.ObjectType.dataMatrix,
AVMetadataObject.ObjectType.interleaved2of5]
But when we update our source to iOS 16, only "AVMetadataObject.ObjectType.codabar" type barcode cannot read inside the detection area. All other barcode can be detect and read inside detection area. if we expand detection area to full screen "AVMetadataObject.ObjectType.codabar" can be readed.
So is there a specific reason for this scenario or is it a problem comes with iOS 16?