Comments (15)
Apologies for the late reply. My app began crashing again after I updated to iPadOS v15.4.1. I found a work around that is a bit of a hack but it stopped the crashing. Here it is below. Basically runs [UIPrintInteractionController sharedPrintControllerWithSettings:settings]
on the main thread. @jameshhood hope this points you in the right direction
` - (void) printContent:(NSString *)content
withSettings:(NSDictionary *)settings
{
__block id item;
__block UIPrintInteractionController* ctrl;
//UIPrintInteractionController* ctrl =
//[UIPrintInteractionController sharedPrintControllerWithSettings:settings];
dispatch_sync(dispatch_get_main_queue(), ^{
ctrl =
[UIPrintInteractionController sharedPrintControllerWithSettings:settings];
});`
from cordova-plugin-printer.
I am getting similar errors
2022-04-29 18:49:21.050708-0400 POD[74776:2515552] [LayoutConstraints] Unable to simultaneously satisfy constraints.
Probably at least one of the constraints in the following list is one you don't want.
Try this:
(1) look at each constraint and try to figure out which you don't expect;
(2) find the code that added the unwanted constraint or constraints and fix it.
(Note: If you're seeing NSAutoresizingMaskLayoutConstraints that you don't understand, refer to the documentation for the UIView property translatesAutoresizingMaskIntoConstraints)
(
"<NSAutoresizingMaskLayoutConstraint:0x600003f4e3f0 h=--& v=--& UIView:0x7f7dbd730400.width == 198.591 (active)>",
"<NSLayoutConstraint:0x600003f540a0 UIView:0x7f7dbd730400.leading == UIPrintPreviewPageCell:0x7f7dbd72bb50.leading (active)>",
"<NSLayoutConstraint:0x600003f54c30 UIView:0x7f7dbd730400.trailing == UIPrintPreviewPageCell:0x7f7dbd72bb50.trailing (active)>",
"<NSLayoutConstraint:0x600003f854a0 'UIView-Encapsulated-Layout-Width' UIPrintPreviewPageCell:0x7f7dbd72bb50.width == 198.333 (active)>"
)
Will attempt to recover by breaking constraint
<NSLayoutConstraint:0x600003f54c30 UIView:0x7f7dbd730400.trailing == UIPrintPreviewPageCell:0x7f7dbd72bb50.trailing (active)>
Make a symbolic breakpoint at UIViewAlertForUnsatisfiableConstraints to catch this in the debugger.
The methods in the UIConstraintBasedLayoutDebugging category on UIView listed in <UIKitCore/UIView.h> may also be helpful.
If I start a print I get this warning above. If I cancel and hit my print button again my app crashes and I get the following
2022-04-29 18:50:39.151016-0400 POD[74776:2521443] [Animation] +[UIView setAnimationsEnabled:] being called from a background thread. Performing any operation from a background thread on UIView or a subclass is not supported and may result in unexpected and insidious behavior. trace=(
0 UIKitCore 0x000000012e17c8fa kFixedAnimationDuration_block_invoke_4 + 119
1 libdispatch.dylib 0x000000010cbcfa5b _dispatch_client_callout + 8
2 libdispatch.dylib 0x000000010cbd0f24 _dispatch_once_callout + 66
3 UIKitCore 0x000000012e17c9d5 +[UIView(Animation) performWithoutAnimation:] + 78
4 UIKitCore 0x000000012d2277d1 -[UICollectionView _updateWithItems:tentativelyForReordering:propertyAnimator:collectionViewAnimator:] + 4177
5 UIKitCore 0x000000012d21ef18 -[UICollectionView _endItemAnimationsWithInvalidationContext:tentativelyForReordering:animator:collectionViewAnimator:] + 15362
6 UIKitCore 0x000000012d21a48a -[UICollectionView _updateRowsAtIndexPaths:updateAction:updates:] + 510
7 UIKitCore 0x000000012d21a614 -[UICollectionView reloadItemsAtIndexPaths:] + 62
8 UIKitCore 0x000000012db6524b -[UIPrintPreviewViewController updatePrintPreviewInfo:] + 131
9 UIKitCore 0x000000012db5f779 -[UIPrintPanelViewController updatePrintPreviewInfo] + 94
10 CoreFoundation 0x000000010ba71331 __CFNOTIFICATIONCENTER_IS_CALLING_OUT_TO_AN_OBSERVER__ + 12
11 CoreFoundation 0x000000010ba712f7 ___CFXRegistrationPost_block_invoke + 49
12 CoreFoundation 0x000000010ba70844 _CFXRegistrationPost + 496
13 CoreFoundation 0x000000010ba7017a _CFXNotificationPost + 822
14 Foundation 0x0000000107c05dec -[NSNotificationCenter postNotificationName:object:userInfo:] + 82
15 UIKitCore 0x000000012db8591f -[UIPrintInfo setOutputType:] + 78
16 CordovaPlugins 0x00000001064ee61a +[APPPrinterInfo printInfoWithDictionary:] + 762
17 CordovaPlugins 0x00000001064f6c98 +[UIPrintInteractionController(APPPrinter) sharedPrintControllerWithSettings:] + 136
18 CordovaPlugins 0x00000001064ebcd6 -[APPPrinter printContent:withSettings:] + 182
19 CordovaPlugins 0x00000001064eb3bd __20-[APPPrinter print:]_block_invoke + 269
20 libdispatch.dylib 0x000000010cbce816 _dispatch_call_block_and_release + 12
21 libdispatch.dylib 0x000000010cbcfa5b _dispatch_client_callout + 8
22 libdispatch.dylib 0x000000010cbd1e63 _dispatch_queue_override_invoke + 1040
23 libdispatch.dylib 0x000000010cbe1ba2 _dispatch_root_queue_drain + 419
24 libdispatch.dylib 0x000000010cbe264e _dispatch_worker_thread2 + 196
25 libsystem_pthread.dylib 0x00007fff6fb05f8a _pthread_wqthread + 256
26 libsystem_pthread.dylib 0x00007fff6fb04f57 start_wqthread + 15
)
2022-04-29 18:50:39.156101-0400 POD[74776:2521443] This application is modifying the autolayout engine from a background thread after the engine was accessed from the main thread. This can lead to engine corruption and weird crashes.
Stack:(
0 CoreAutoLayout 0x000000010f9e3f0c _AssertAutoLayoutOnAllowedThreadsOnly + 206
1 CoreAutoLayout 0x000000010f9e426c -[NSISEngine withBehaviors:performModifications:] + 25
2 UIKitCore 0x000000012e079fb3 -[UIView(UIConstraintBasedLayout) _engineHostConstraints_frameDidChange] + 284
3 UIKitCore 0x000000012e07a05b -[UIView _constraints_frameDidChange] + 159
4 UIKitCore 0x000000012e1652d9 -[UIView setCenter:] + 358
5 UIKitCore 0x000000012d23f713 -[UICollectionReusableView _setLayoutAttributes:] + 307
6 UIKitCore 0x000000012d242eea -[UICollectionViewCell _setLayoutAttributes:] + 147
7 UIKitCore 0x000000012d1ff1f1 -[UICollectionView _applyLayoutAttributes:toView:] + 170
8 UIKitCore 0x000000012d217420 __88-[UICollectionView _dequeueReusableViewOfKind:withIdentifier:forIndexPath:viewCategory:]_block_invoke_2 + 35
9 UIKitCore 0x000000012e17c9db +[UIView(Animation) performWithoutAnimation:] + 84
10 UIKitCore 0x000000012d217034 -[UICollectionView _dequeueReusableViewOfKind:withIdentifier:forIndexPath:viewCategory:] + 2147
11 UIKitCore 0x000000012d2174e8 -[UICollectionView dequeueReusableCellWithReuseIdentifier:forIndexPath:] + 88
12 UIKitCore 0x000000012db65a51 -[UIPrintPreviewViewController collectionView:cellForItemAtIndexPath:] + 65
13 UIKitCore 0x000000012d1fd848 -[UICollectionView _createPreparedCellForItemAtIndexPath:withLayoutAttributes:applyAttributes:isFocused:notify:] + 1241
14 UIKitCore 0x000000012d1fd2f8 -[UICollectionView _preparedCellForItemAtIndexPath:withLayoutAttributes:applyAttributes:isFocused:notify:] + 731
15 UIKitCore 0x000000012d22412d __78-[UICollectionView _viewAnimationsForCurrentUpdateWithCollectionViewAnimator:]_block_invoke.2009 + 578
16 UIKitCore 0x000000012d220b9e -[UICollectionView _viewAnimationsForCurrentUpdateWithCollectionViewAnimator:] + 4411
17 UIKitCore 0x000000012d228b75 __102-[UICollectionView _updateWithItems:tentativelyForReordering:propertyAnimator:collectionViewAnimator:]_block_invoke.2103 + 258
18 UIKitCore 0x000000012e17c9db +[UIView(Animation) performWithoutAnimation:] + 84
19 UIKitCore 0x000000012d2277d1 -[UICollectionView _updateWithItems:tentativelyForReordering:propertyAnimator:collectionViewAnimator:] + 4177
20 UIKitCore 0x000000012d21ef18 -[UICollectionView _endItemAnimationsWithInvalidationContext:tentativelyForReordering:animator:collectionViewAnimator:] + 15362
21 UIKitCore 0x000000012d21a48a -[UICollectionView _updateRowsAtIndexPaths:updateAction:updates:] + 510
22 UIKitCore 0x000000012d21a614 -[UICollectionView reloadItemsAtIndexPaths:] + 62
23 UIKitCore 0x000000012db6524b -[UIPrintPreviewViewController updatePrintPreviewInfo:] + 131
24 UIKitCore 0x000000012db5f779 -[UIPrintPanelViewController updatePrintPreviewInfo] + 94
25 CoreFoundation 0x000000010ba71331 __CFNOTIFICATIONCENTER_IS_CALLING_OUT_TO_AN_OBSERVER__ + 12
26 CoreFoundation 0x000000010ba712f7 ___CFXRegistrationPost_block_invoke + 49
27 CoreFoundation 0x000000010ba70844 _CFXRegistrationPost + 496
28 CoreFoundation 0x000000010ba7017a _CFXNotificationPost + 822
29 Foundation 0x0000000107c05dec -[NSNotificationCenter postNotificationName:object:userInfo:] + 82
30 UIKitCore 0x000000012db8591f -[UIPrintInfo setOutputType:] + 78
31 CordovaPlugins 0x00000001064ee61a +[APPPrinterInfo printInfoWithDictionary:] + 762
32 CordovaPlugins 0x00000001064f6c98 +[UIPrintInteractionController(APPPrinter) sharedPrintControllerWithSettings:] + 136
33 CordovaPlugins 0x00000001064ebcd6 -[APPPrinter printContent:withSettings:] + 182
34 CordovaPlugins 0x00000001064eb3bd __20-[APPPrinter print:]_block_invoke + 269
35 libdispatch.dylib 0x000000010cbce816 _dispatch_call_block_and_release + 12
36 libdispatch.dylib 0x000000010cbcfa5b _dispatch_client_callout + 8
37 libdispatch.dylib 0x000000010cbd1e63 _dispatch_queue_override_invoke + 1040
38 libdispatch.dylib 0x000000010cbe1ba2 _dispatch_root_queue_drain + 419
39 libdispatch.dylib 0x000000010cbe264e _dispatch_worker_thread2 + 196
40 libsystem_pthread.dylib 0x00007fff6fb05f8a _pthread_wqthread + 256
41 libsystem_pthread.dylib 0x00007fff6fb04f57 start_wqthread + 15
)
2022-04-29 18:50:39.161411-0400 POD[74776:2521443] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Modifications to the layout engine must not be performed from a background thread after it has been accessed from the main thread.'
*** First throw call stack:
(
0 CoreFoundation 0x000000010bb32d44 __exceptionPreprocess + 242
1 libobjc.A.dylib 0x00000001064aca65 objc_exception_throw + 48
2 CoreAutoLayout 0x000000010f9e3fe4 -[NSISEngine tryToOptimizeReturningMutuallyExclusiveConstraints] + 0
3 CoreAutoLayout 0x000000010f9e426c -[NSISEngine withBehaviors:performModifications:] + 25
4 UIKitCore 0x000000012e079fb3 -[UIView(UIConstraintBasedLayout) _engineHostConstraints_frameDidChange] + 284
5 UIKitCore 0x000000012e07a05b -[UIView _constraints_frameDidChange] + 159
6 UIKitCore 0x000000012e1652d9 -[UIView setCenter:] + 358
7 UIKitCore 0x000000012d23f713 -[UICollectionReusableView _setLayoutAttributes:] + 307
8 UIKitCore 0x000000012d242eea -[UICollectionViewCell _setLayoutAttributes:] + 147
9 UIKitCore 0x000000012d1ff1f1 -[UICollectionView _applyLayoutAttributes:toView:] + 170
10 UIKitCore 0x000000012d217420 __88-[UICollectionView _dequeueReusableViewOfKind:withIdentifier:forIndexPath:viewCategory:]_block_invoke_2 + 35
11 UIKitCore 0x000000012e17c9db +[UIView(Animation) performWithoutAnimation:] + 84
12 UIKitCore 0x000000012d217034 -[UICollectionView _dequeueReusableViewOfKind:withIdentifier:forIndexPath:viewCategory:] + 2147
13 UIKitCore 0x000000012d2174e8 -[UICollectionView dequeueReusableCellWithReuseIdentifier:forIndexPath:] + 88
14 UIKitCore 0x000000012db65a51 -[UIPrintPreviewViewController collectionView:cellForItemAtIndexPath:] + 65
15 UIKitCore 0x000000012d1fd848 -[UICollectionView _createPreparedCellForItemAtIndexPath:withLayoutAttributes:applyAttributes:isFocused:notify:] + 1241
16 UIKitCore 0x000000012d1fd2f8 -[UICollectionView _preparedCellForItemAtIndexPath:withLayoutAttributes:applyAttributes:isFocused:notify:] + 731
17 UIKitCore 0x000000012d22412d __78-[UICollectionView _viewAnimationsForCurrentUpdateWithCollectionViewAnimator:]_block_invoke.2009 + 578
18 UIKitCore 0x000000012d220b9e -[UICollectionView _viewAnimationsForCurrentUpdateWithCollectionViewAnimator:] + 4411
19 UIKitCore 0x000000012d228b75 __102-[UICollectionView _updateWithItems:tentativelyForReordering:propertyAnimator:collectionViewAnimator:]_block_invoke.2103 + 258
20 UIKitCore 0x000000012e17c9db +[UIView(Animation) performWithoutAnimation:] + 84
21 UIKitCore 0x000000012d2277d1 -[UICollectionView _updateWithItems:tentativelyForReordering:propertyAnimator:collectionViewAnimator:] + 4177
22 UIKitCore 0x000000012d21ef18 -[UICollectionView _endItemAnimationsWithInvalidationContext:tentativelyForReordering:animator:collectionViewAnimator:] + 15362
23 UIKitCore 0x000000012d21a48a -[UICollectionView _updateRowsAtIndexPaths:updateAction:updates:] + 510
24 UIKitCore 0x000000012d21a614 -[UICollectionView reloadItemsAtIndexPaths:] + 62
25 UIKitCore 0x000000012db6524b -[UIPrintPreviewViewController updatePrintPreviewInfo:] + 131
26 UIKitCore 0x000000012db5f779 -[UIPrintPanelViewController updatePrintPreviewInfo] + 94
27 CoreFoundation 0x000000010ba71331 __CFNOTIFICATIONCENTER_IS_CALLING_OUT_TO_AN_OBSERVER__ + 12
28 CoreFoundation 0x000000010ba712f7 ___CFXRegistrationPost_block_invoke + 49
29 CoreFoundation 0x000000010ba70844 _CFXRegistrationPost + 496
30 CoreFoundation 0x000000010ba7017a _CFXNotificationPost + 822
31 Foundation 0x0000000107c05dec -[NSNotificationCenter postNotificationName:object:userInfo:] + 82
32 UIKitCore 0x000000012db8591f -[UIPrintInfo setOutputType:] + 78
33 CordovaPlugins 0x00000001064ee61a +[APPPrinterInfo printInfoWithDictionary:] + 762
34 CordovaPlugins 0x00000001064f6c98 +[UIPrintInteractionController(APPPrinter) sharedPrintControllerWithSettings:] + 136
35 CordovaPlugins 0x00000001064ebcd6 -[APPPrinter printContent:withSettings:] + 182
36 CordovaPlugins 0x00000001064eb3bd __20-[APPPrinter print:]_block_invoke + 269
37 libdispatch.dylib 0x000000010cbce816 _dispatch_call_block_and_release + 12
38 libdispatch.dylib 0x000000010cbcfa5b _dispatch_client_callout + 8
39 libdispatch.dylib 0x000000010cbd1e63 _dispatch_queue_override_invoke + 1040
40 libdispatch.dylib 0x000000010cbe1ba2 _dispatch_root_queue_drain + 419
41 libdispatch.dylib 0x000000010cbe264e _dispatch_worker_thread2 + 196
42 libsystem_pthread.dylib 0x00007fff6fb05f8a _pthread_wqthread + 256
43 libsystem_pthread.dylib 0x00007fff6fb04f57 start_wqthread + 15
)
libc++abi: terminating with uncaught exception of type NSException
dyld4 config: DYLD_ROOT_PATH=/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Library/Developer/CoreSimulator/Profiles/Runtimes/iOS.simruntime/Contents/Resources/RuntimeRoot DYLD_LIBRARY_PATH=/Users/jhood/Library/Developer/Xcode/DerivedData/App-caaykzrtdthsjadiokzfwhamtbls/Build/Products/Debug-iphonesimulator:/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Library/Developer/CoreSimulator/Profiles/Runtimes/iOS.simruntime/Contents/Resources/RuntimeRoot/usr/lib/system/introspection DYLD_INSERT_LIBRARIES=/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Library/Developer/CoreSimulator/Profiles/Runtimes/iOS.simruntime/Contents/Resources/RuntimeRoot/usr/lib/libBacktraceRecording.dylib:/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Library/Developer/CoreSimulator/Profiles/Runtimes/iOS.simruntime/Contents/Resources/RuntimeRoot/usr/lib/libMainThreadChecker.dylib:/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Library/Developer/CoreSimulator/Profiles/Runtimes/iOS.simruntime/Contents/Resources/RuntimeRoot/Developer/Library/PrivateFrameworks/DTDDISupport.framework/libViewDebuggerSupport.dylib DYLD_FRAMEWORK_PATH=/Users/jhood/Library/Developer/Xcode/DerivedData/App-caaykzrtdthsjadiokzfwhamtbls/Build/Products/Debug-iphonesimulator
*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Modifications to the layout engine must not be performed from a background thread after it has been accessed from the main thread.'
terminating with uncaught exception of type NSException
CoreSimulator 802.6 - Device: iPhone 12 Pro Max (3B3E9877-7929-4BC9-857F-CEE733E97B6C) - Runtime: iOS 15.4 (19E240) - DeviceType: iPhone 12 Pro Max
(lldb)
I'm going to keep trying some other things but this used to work just fine. The only thing that has changed I believe is iOS15
from cordova-plugin-printer.
What resolved the crash for me was to edit UIPrintInteractionController+APPPrinter.m and wrap the ctrl.printInfo assignment with a dispatch_async as shown below.
dispatch_async(dispatch_get_main_queue(), ^{ ctrl.printInfo = [APPPrinterInfo printInfoWithDictionary:settings]; });
from cordova-plugin-printer.
Thank you Kloopler, I'll give that a try 👍
from cordova-plugin-printer.
That's a shame.. it didn't work for me
from cordova-plugin-printer.
Hi @kloopler, would you be so kind as to share the code you have in the UIPrintInteractionController+APPPrinter.m file?
from cordova-plugin-printer.
Hi @AlisterRWood were you able to sort this error? we´re having the same issue and haven't found a fix yet.
from cordova-plugin-printer.
Sadly not... I tried wrapping nearly part of each function in a dispatch_async but never got it working. Let me know if you find anything that does work and I'll let you know if I do
from cordova-plugin-printer.
Thanks @AlisterRWood we´ll let you know for sure.
@kloopler would you be so kind to share the code in your UIPrintInteractionController+APPPrinter.m file? it will be very helpful
from cordova-plugin-printer.
Hi @legustav & @AlisterRWood,
looks like this is a general problem in iOS15: https://developer.apple.com/forums/thread/689876
You need to update APPPrinter.m (l.259) like this to make it work again:
dispatch_async(dispatch_get_main_queue(), ^{
// [ctrl printToPrinter:printer completionHandler:
// ^(UIPrintInteractionController *ctrl, BOOL ok, NSError *e) {
// [self rememberPrinter:(ok ? printer : NULL)];
// [self sendResultWithMessageAsBool:ok callbackId:callbackId];
// }];
[printer contactPrinter:^(BOOL available) {
if (available) {
[ctrl printToPrinter:printer completionHandler:
^(UIPrintInteractionController *ctrl, BOOL ok, NSError *e) {
[self rememberPrinter:(ok ? printer : NULL)];
[self sendResultWithMessageAsBool:ok callbackId:callbackId];
}];
} else {
NSLog(@"printer unavailable");
}
}];
});
from cordova-plugin-printer.
Thank you so much @Fauphi. That has got my app up and running again
from cordova-plugin-printer.
Many thanks @Fauphi @kloopler & @AlisterRWood for all the help!
from cordova-plugin-printer.
@kloopler Your solution works perfectly fine! Thanks a lot. ❤️
Can you push a merge request? cc @katzer
from cordova-plugin-printer.
I created a PR by taking the fix of @kloopler : #292
from cordova-plugin-printer.
@jameshhood did you manage to resolve this issue?
from cordova-plugin-printer.
Related Issues (20)
- Plugin always prints the contents of the web view instead of text HOT 1
- Not works on Handheld Data Terminal
- Printing on Android HOT 1
- Is there any way to skip print preview dialog in android and ios both using this plugin HOT 6
- Cannot compile with android 10.0.0 HOT 10
- Can i print the document as an Image instead of PDF ? HOT 1
- How can I show cancel print? HOT 1
- print base64 pdf HOT 3
- can't use it with IONIC 6/ capacitor React Project! HOT 1
- ionic printer preview show perfect but doing print time page getting small size
- Problem using Brother VC-500W HOT 1
- how to set page size on android?
- ios first preview shows blank but works fine if i change the orientation once HOT 1
- Error: "package android.support.v4.content does not exist" HOT 4
- The margins suppression is not working at all on windows HOT 2
- page-break-inside not work in andoird print case
- Print fails to display document preview intermittently with iOS 17 upgrade HOT 6
- Print crashes in ios 17 HOT 2
- Install crashes with checking android_sdk_version HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from cordova-plugin-printer.