See also: https://bugreports.qt.io/browse/QTBUG-38184
 
 
Sent: Monday, August 22, 2016 at 11:04 PM
From: "Jason H" <jh...@gmx.com>
To: "Nuno Santos" <nunosan...@imaginando.pt>
Cc: interest@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" <nunosan...@imaginando.pt>
To: "Manoel Neto" <manoelne...@gmail.com>
Cc: "Jason H" <jh...@gmx.com>, interest@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 <manoelne...@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 <jh...@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" <manoelne...@gmail.com>
To: interest@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
manoelne...@gmail.com
_______________________________________________
Interest mailing list
Interest@qt-project.org
http://lists.qt-project.org/mailman/listinfo/interest
 



-- 
Manoel Carvalho Marques Neto
manoelne...@gmail.com
_______________________________________________
Interest mailing list
Interest@qt-project.org
http://lists.qt-project.org/mailman/listinfo/interest
_______________________________________________ Interest mailing list Interest@qt-project.org http://lists.qt-project.org/mailman/listinfo/interest
_______________________________________________
Interest mailing list
Interest@qt-project.org
http://lists.qt-project.org/mailman/listinfo/interest

Reply via email to