Is there any way to catch the moment when a user hides the notification panel with a widget? I want to save some information into the database at that moment (I want it to be similar to applicationDidEnterBackground:). Any other ideas about how to save data at the last moment would also be appreciated.
Is it possible to determine when iOS widget hides?
259 views Asked by Accid Bright At
2
There are 2 answers
2
Christopher Pickslay
On
@Andrew is correct that the normal UIViewController lifecycle methods will be called when your widget goes off screen, but your controller will also be deallocated shortly thereafter, and its process suspended. So if you need to do some I/O, you have no guarantee it will complete.
The recommended way to keep your extension's process alive is to request a task assertion using performExpiringActivityWithReason:usingBlock:.
override func viewWillDisappear(animated: Bool) {
super.viewWillDisappear(animated)
NSProcessInfo.processInfo().performExpiringActivityWithReason("because", usingBlock: { (expired) -> Void in
if expired {
NSLog("expired")
} else {
// save state off to database
}
})
}
Related Questions in IOS
- URLSession requesting JSON array from server not working
- Incorrect display of LinearGradientBrush in IOS
- Module not found when building flutter app for IOS
- How to share metadata of an audio url file to a WhatsApp conversation with friends
- Occasional crash at NSURLSessionDataTask dataTaskWithRequest:completionHandler:
- Expo Deep linking on iOS is not working (because of Google sign-in?)
- On iOS, the keyboard does not offer a 6-character SMS code
- Hi, there is an error happened when I build my flutter app, after I'm installing firebase packages occurs that error
- The copy/paste functionalities don't work only on iOS in the Flutter app
- Hide LiveActivityIntent Button from Shortcuts App
- While Running Github Actions Pipeline: No Signing Certificate "iOS Development" found: No "iOS Development" signing certificate matching team ID
- Actionable notification api call not working in background
- Accessibility : Full keyboard access with scroll view in swiftui
- There is a problem with the request entity - You are not allowed to create 'iOS' profile with App ID 'XXXX'
- I am getting "binding has not yet been initialized" error when trying to connect firebase with flutter
Related Questions in IOS8
- Are iOS MDM profile config file meant to be public?
- Compatibility of named colors below iOS 11
- iOS12, kReachabilityChangedNotification is not worked
- How to add buttons to wkWebView?
- iOS 8 - show incoming call when app is not active (without CallKit)
- pangestures interactive like mail app in iOS
- Animating swipe actions in tableview
- ASIHTTPREQUEST not working as expected in iOS 8.3
- Xcode 9 - Safe Area Layout Guides Error Comes Back
- Using spotlight in iOS app with deployment target iOS 8
- Issue with UIImage on older iOS versions
- How do you launch an iOS app in the current device orientation?
- uiimageview.image appears to be warped on iOS 8 simulator
- Codename One - Can't read from socket on real device
- iPhone X backward compatibility to cater devices below iOS 8 versions and future compatibility
Related Questions in WIDGET
- I couldn't figure out why function does not work for a second time in Kivy
- Dropdown Values not change in Flutter Modal
- Widget APL Touch Component Advice
- QT-PyQt-PySide-Custom-Widgets error: No library called cairo was found
- Binding Panel DatetimeRangePicker to plot
- Jira helpdesk widget doesn't create an iframe when script is loaded dynamically
- In Google Dialogflow CX, how do I make sure that links are opened in a new tab?
- Countdown to varying payday in Javascript
- Execution failed for task ':app:compileFlutterBuildDebug'. > Process 'command 'C:\flutter\bin\flutter.bat'' finished with non-zero exit value 1Error:
- Unable to Group by Parent in Stacked bar chart - ADO Dashboard widget
- Read Access Violation when accessing a QBarDataItem in a loop in QLineEdit::editingFinished
- Jupyter Notebook not rendering report with pandas profiling
- WordPress widget deleted
- How to detect if a widget is visible or not in Flutter
- How to add haptics to Button in home screen widget (Glance API) in android
Related Questions in IOS8-EXTENSION
- iOS InApp Purchase in Action Extension app
- Unable to load Today Extension with table view
- How can I sign in with the Google SignIn SDK in a sharing extension?
- Cannot get AdMob or iAd banner ad to work in iOS ActionExtension or ShareExtension
- iOS Share extension - Calling multiple request
- iOS Share vs Action App Extension
- How to copy the selected HTML without modifying the format - iOS extension
- Multiple keyboard layouts in an iOS keyboard extension
- Take screenshot of host app using iOS share/action extensions?
- Use custom Keyboard app extension in own application at launch. IOS 8-9
- How to make an IOS 8 share extenison that will have deafult text
- How to make an iOS 8 share extension that will have default text
- Get HTML from Safari share extension?
- Is it possible to determine when iOS widget hides?
- Carthage build a framework containing an inner framework dependency
Related Questions in IOS8-TODAY-WIDGET
- React Native: This is not a function handling custom URL scheme
- iOS: Today Widget "unable to load" after reboot device
- Today Widget uses more memory each time it refreshes, then eventually crashes
- Today extension doesn't appear on simulator
- Send button click event from iOS Today Widget without launching the host app
- How to build a Today Widget / App Extension with Cordova?
- Today Extension background update
- ViewDid Load of today Widget gets called every time
- How to get the width of a today-extension in iOS 8 / 9
- Determine if the widget is enabled
- Today Widget - Conflict Autolayout Constraint When Locking the device
- Unable to load Today Extension with table view
- XCUITest and Today Widget
- iOS Today Widget Dropping BT Connection
- NSUserDefaults not loading for Today Extension (Swift)
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
Popular Tags
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
Usually, your widget would be a
UIViewControllerinstance, conforming to theNCWidgetProvidingprotocol. That means, that you can take advantage ofUIViewController's functionality and execute your code in- (void)viewWillDisappear:(BOOL)animated;or
I tested it and it worked.