[Interest] Location when the App is Killed/Terminated/Suspended

Manoel Neto manoelnetom at gmail.com
Tue Aug 23 14:21:54 CEST 2016


Hi Jason,
    Thanks again for your interest in my problem. But as i said, i did
my Delegate and it works good. I did something like this:

#include <QtCore>

@interface QIOSApplicationDelegate

@end


@interface QIOSApplicationDelegate(QtAppDelegate) // Put here the name
of your delegate...i used "QtAppDelegate"

@end


@implementation QIOSApplicationDelegate (QtAppDelegate)

- (BOOL)application:(UIApplication *)application
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

{

 NSLog(@"It Works!! When the app did finish launch ");

return YES;

}
@end

Using this code, you dont have to set the delegate in main. It works
perfectly ONLY WHEN the APP is in FOREGROUND /ACTIVE or in BACKGROUND.
My problem is that i need to use this delegate to get LOCATION when
the app is KILLED/TERMINATED/SUSPENDED.

See this link http://mobileoop.com/getting-location-updates-for-ios-7-and-8-when-the-app-is-killedterminatedsuspended.
Here the author gives an example of how to do this using Objective C.
I did the same example using QT...the code compiles and run perfectly
ony when the app is  FOREGROUND /ACTIVE or in BACKGROUND...but not
when the app is KILLED/TERMINATED/SUSPENDED.

Any idea?

Best R,

Manoel

On Tue, Aug 23, 2016 at 12:08 AM, Jason H <jhihn at gmx.com> wrote:
> See also: https://bugreports.qt.io/browse/QTBUG-38184
>
>
> Sent: Monday, August 22, 2016 at 11:04 PM
> From: "Jason H" <jhihn at gmx.com>
> To: "Nuno Santos" <nunosantos at imaginando.pt>
> Cc: interest at qt-project.org
>
> Subject: Re: [Interest] Location when the App is Killed/Terminated/Suspended
> I wish I understood more about this:
>
>
> QIOSIntegration::QIOSIntegration()
>
>     : m_fontDatabase(new QCoreTextFontDatabase)
>
>     , m_clipboard(new QIOSClipboard)
>
>     , m_inputContext(0)
>
>     , m_platformServices(new QIOSServices)
>
>     , m_accessibility(0)
>
>     , m_debugWindowManagement(false)
>
> {
>
>     if (![UIApplication sharedApplication]) {
>
>         qFatal("Error: You are creating QApplication before calling
> UIApplicationMain.\n" \
>
>                "If you are writing a native iOS application, and only want
> to use Qt for\n" \
>
>                "parts of the application, a good place to create
> QApplication is from within\n" \
>
>                "'applicationDidFinishLaunching' inside your UIApplication
> delegate.\n");
>
>     }
>
> Thre is also:
>
> @implementation QIOSApplicationDelegate
>
> - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url
> sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
>
> {
>
>     Q_UNUSED(application);
>
>     Q_UNUSED(sourceApplication);
>
>     Q_UNUSED(annotation);
>
>
>
>     if (!QGuiApplication::instance())
>
>         return NO;
>
>
>
>     QIOSIntegration *iosIntegration = QIOSIntegration::instance();
>
>     Q_ASSERT(iosIntegration);
>
>
>
>     QIOSServices *iosServices = static_cast<QIOSServices
> *>(iosIntegration->services());
>
>
>
>     return iosServices->handleUrl(QUrl::fromNSURL(url));
>
> }
>
>
>
> @end
>
>
>
> Which makes me thing you need to inherit from QIOSApplicationDelegate wiht
> your delegate and somehow assign your delegate to be the application
> delegate.
>
> But I don't know much about iOS internals.
>
>
> Sent: Monday, August 22, 2016 at 7:53 PM
> From: "Nuno Santos" <nunosantos at imaginando.pt>
> To: "Manoel Neto" <manoelnetom at gmail.com>
> Cc: "Jason H" <jhihn at gmx.com>, interest at qt-project.org
> Subject: Re: [Interest] Location when the App is Killed/Terminated/Suspended
> I think didFinishLaunchingWithOptions will only get called when the app is
> first loaded.
>
> Have you tried the following ones?
>
> - (void)applicationWillResignActive:(UIApplication *)application;
> - (void)applicationDidEnterBackground:(UIApplication *)application;
> -(void)applicationWillTerminate:(UIApplication *)application;
>
> Nuno
>
>
> On 22 Aug 2016, at 23:19, Manoel Neto <manoelnetom at gmail.com> wrote:
>
> Hi Jason, thanks for your reply. My problem is not how to build
> AppDelegate (I did this and it is ok  when the app is active or in
> background.). The question is: how to call
> didFinishLaunchingWithOptions "when the ap is Killed, suspended or
> terminated." ? Apple says that if an app uses "The significant-change
> location service", iOS will wake it up if there's a location update to
> be delivered, even if the app is terminated. But i cant make it work
> using QT.
>
> Best R,
>
> Manoel
>
> On Mon, Aug 22, 2016 at 6:54 PM, Jason H <jhihn at gmx.com> wrote:
>
> @implementation QtAppDelegate
>
> +(QtAppDelegate *)sharedQtAppDelegate{
>        static dispatch_once_t pred;
>        static QtAppDelegate *shared = nil;
>        dispatch_once(&pred, ^{
>                shared = [[super alloc] init];
>        });
>        return shared;
> }
>
> ...
>
>
> void QtAppDelegateInitialize()
> {
>        [[UIApplication sharedApplication] setDelegate:[QtAppDelegate
> sharedQtAppDelegate]];
> }
>
>
> // int main() {
>
> #if defined(Q_OS_IOS)
>        QtAppDelegateInitialize();
> #endif
>
>
>
> Sent: Monday, August 22, 2016 at 4:47 PM
> From: "Manoel Neto" <manoelnetom at gmail.com>
> To: interest at qt-project.org
> Subject: [Interest] Location when the App is Killed/Terminated/Suspended
>
> Hi ,
>   I'm building an APP using QT/QML for IOS / Android and need to use
> location when the APP is Killed, suspended or terminated. For IOS i
> did an Objective C implementation and used
> startMonitoringSignificantLocationChanges method  from
> CLLocationManager class.
>
> Briefly, I extended the QIOSApplicationDelegate to have access to the
> didFinishLaunchingWithOptions method. There i check the option key "
> UIApplicationLaunchOptionsLocationKey" and, if ok, start monitoring
> Location using a LocationManager Delegate. The Background App Refresh
> is enable for the Location updates to work in the background.
>
> I folow an example code (in IOS) tha works great even when the app is
> Killed, suspended or terminated.  The only diference from my QT code
> is that in QT i use QIOSApplicationDelegate instead of system delegate
> in IOS. But in QT the didFinishLaunchingWithOptions is never called
> when the ap is Killed, suspended or terminated.
>
> - (BOOL)application:(UIApplication *)application
> didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
> .....
>    shareModel = [LocationManager sharedManager];
>       if ([launchOptions
> objectForKey:UIApplicationLaunchOptionsLocationKey]) {
>            [shareModel startMonitoringLocation];
>       }
> }
>
> Any suggestion?
>
> Best R,
> Manoel
>
>
>
>
> --
> Manoel Carvalho Marques Neto
> manoelnetom at gmail.com
> _______________________________________________
> Interest mailing list
> Interest at qt-project.org
> http://lists.qt-project.org/mailman/listinfo/interest
>
>
>
>
>
> --
> Manoel Carvalho Marques Neto
> manoelnetom at gmail.com
> _______________________________________________
> Interest mailing list
> Interest at qt-project.org
> http://lists.qt-project.org/mailman/listinfo/interest
>
> _______________________________________________ Interest mailing list
> Interest at qt-project.org
> http://lists.qt-project.org/mailman/listinfo/interest
>
> _______________________________________________
> Interest mailing list
> Interest at qt-project.org
> http://lists.qt-project.org/mailman/listinfo/interest
>



-- 
Manoel Carvalho Marques Neto
manoelnetom at gmail.com



More information about the Interest mailing list