Thanks Edward for your fast answer. 

That is working also if your app is not in the background (i.e not
started)? 

Le 13-11-2015 19:42, Edward Sutton a écrit : 

> I am using a pure Qt 5.5.1 iOS widgets app. Disclaimer: This solution works 
> but may not be the best solution. Recommendations for a cleaner approach are 
> welcome. 
> 
> Using Qt 5.5.1 I added myApplicationDelegate.mm that posts an fileOpenEvent. 
> It would be nice if this was built into Qt. See below File: 
> myApplicationDelegate.mm. 
> 
> Then I subclass QApplication to include to add a member variable for my 
> QMainWindowto watch for QEvent::FileOpen and call 
> 
> /// Looks for QFileOpenEvent to implement app file open from
> 
> /// other apps, for example, Finder on OS X, or Apple Mail on iOS and OS X.
> 
> ///
> 
> ///
> 
> /// remarks Could this work on Android too?
> 
> ///
> 
> /// See file: myApplicationDelegate.mm
> 
> /// see myApplicationDelegate.mm.mm
> 
> ///
> 
> bool TcmwApplication::event(QEvent* event)
> 
> {
> 
> // iOS receives ApplicationDeactivate, ApllicationStateChange, when Home is 
> pressed
> 
> // When iOS user opens Mail file attachment using "Open in TSR", 
> ApplicationActivate event received but NOT QEvent::FileOpen
> 
> switch (event->type())
> 
> {
> 
> #if 0 // Why was I calling m_mainWindow.show() here? Android problem?
> 
> case QEvent::ApplicationActivate:
> 
> {
> 
> //clean();
> 
> if (false == m_mainWindow.isMinimized())
> 
> {
> 
> qDebug("m_mainWindow.show()");
> 
> // Why was I calling m_mainWindow.show() here? Android problem?
> 
> //m_mainWindow.show();
> 
> }
> 
> return true;
> 
> }
> 
> #endif
> 
> case QEvent::FileOpen:
> 
> {
> 
> // Should file attachments be copied locally as if they were downloaded from 
> a TK?
> 
> QString fileName = static_cast<QFileOpenEvent *>(event)->file();
> 
> m_mainWindow.openFile(fileName);
> 
> return true;
> 
> }
> 
> default:
> 
> break;
> 
> }
> 
> return QApplication::event(event);
> 
> }
> 
> #endif
> 
> -Ed 
> 
> File: myApplicationDelegate.mm 
> 
> #include <UIKit/UIKit.h>
> 
> #include <QDebug>
> 
> #include <QFileOpenEvent>
> 
> #include "qiosapplicationdelegate.h"
> 
> /// category QIOSApplicationDelegate(TcmwApplicationDelegate)
> 
> /// abstract A category on QIOSApplicationDelegate to override openURL
> 
> /// Use the Objective-C category feature to override the openURL method
> 
> @implementation QIOSApplicationDelegate (TcmwApplicationDelegate)
> 
> /// Posts a QFileOpenEvent to QCoreApplication when iOS calls openURL.
> 
> ///
> 
> /// This allows userto open a TSR file from Apple Mail,
> 
> /// select "Open in TSR", to launch TSR and pass openURL the
> 
> /// file to open.
> 
> ///
> 
> /// Must add UTExportedTypeDeclarations and CFBundleDocumentTypes to your
> 
> /// Info.plist for this to work.
> 
> ///
> 
> /// Example: Info.plist
> 
> /// verbatim
> 
> /// <key>UTExportedTypeDeclarations</key>
> 
> /// <array>
> 
> /// <dict>
> 
> /// <key>UTTypeConformsTo</key>
> 
> /// <array>
> 
> /// <string>public.data</string>
> 
> /// </array>
> 
> /// <key>UTTypeDescription</key>
> 
> /// <string>Tracking Status Report</string>
> 
> /// <key>UTTypeIdentifier</key>
> 
> /// <string>com.ditchwitch.tsr</string>
> 
> /// <key>UTTypeTagSpecification</key>
> 
> /// <dict>
> 
> /// <key>public.filename-extension</key>
> 
> /// <string>tsr</string>
> 
> /// <key>public.mime-type</key>
> 
> /// <string>public.data</string>
> 
> /// </dict>
> 
> /// </dict>
> 
> /// </array>
> 
> /// <key>CFBundleDocumentTypes</key>
> 
> /// <array>
> 
> /// <dict>
> 
> /// <key>CFBundleTypeIconFiles</key>
> 
> /// <array>
> 
> /// <string>Icon.png</string>
> 
> /// </array>
> 
> /// <key>CFBundleTypeName</key>
> 
> /// <string>Tracking Status Report</string>
> 
> /// <key>CFBundleTypeRole</key>
> 
> /// <string>Editor</string>
> 
> /// <key>LSHandlerRank</key>
> 
> /// <string>Owner</string>
> 
> /// <key>LSItemContentTypes</key>
> 
> /// <array>
> 
> /// <string>com.ditchwitch.tsr</string>
> 
> /// <string>public.data</string>
> 
> /// </array>
> 
> /// </dict>
> 
> /// </array>
> 
> /// endverbatim
> 
> ///
> 
> /// See file: tcmwapplication.cpp
> 
> /// see tcmwapplication.cpp
> 
> ///
> 
> /// see 
> https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/ProgrammingWithObjectiveC/CustomizingExistingClasses/CustomizingExistingClasses.html
>  [2]
> 
> ///
> 
> - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url
> 
> sourceApplication:(NSString *)sourceApplication
> 
> annotation:(id)annotation
> 
> {
> 
> Q_UNUSED(application);
> 
> Q_UNUSED(annotation);
> 
> NSLog(@"sourceApplication: %@",sourceApplication);
> 
> NSLog(@"url: %@",url);
> 
> QString filePath = QString::fromNSString(url.path);
> 
> qDebug("filePath %s", filePath.toLatin1().data());
> 
> QFileOpenEvent *fileOpenEvent = new QFileOpenEvent(filePath);
> 
> QCoreApplication::postEvent(QCoreApplication::instance(), fileOpenEvent);
> 
> return YES;
> 
> }
> 
> @end
> 
>> On Nov 13, 2015, at 12:24 PM, maitai <mai...@virtual-winds.org> wrote: 
>> 
>> Hello all,
>> 
>> Since I updated to 5.5, I cannot launch my application by opening an email 
>> attachment or such methods, for file extensions that have been registered 
>> for my app in info.plist
>> 
>> I can open the documents only if the app is already running.
>> 
>> I can see in the app's log the following message:
>> 
>> (...)
>> Nov 13 19:03:39 iPad-maitai com.apple.mdt[483] <Notice>: Copy 
>> /var/mobile/Library/Mail/imap-xxx...@gmail.com@imap.gmail.com/INBOX.imapmbox/Attachments/2126/2/530_1.KAP
>>  [1] -> 
>> /private/var/mobile/Containers/Data/Application/53F9684F-8FF2-4A10-A9BD-87A93C97FB11/Documents/Inbox
>> Nov 13 19:03:39 iPad-maitai kernel[0] <Notice>: xpcproxy[484] Container: 
>> /private/var/mobile/Containers/Data/Application/53F9684F-8FF2-4A10-A9BD-87A93C97FB11
>>  (sandbox)
>> Nov 13 19:03:39 iPad-maitai qtVlm[484] <Warning>: 
>> didFinishLaunchingWithOptions option happen
>> Nov 13 19:03:39 iPad-maitai qtVlm[484] <Warning>: url received: 
>> /private/var/mobile/Containers/Data/Application/53F9684F-8FF2-4A10-A9BD-87A93C97FB11/Documents/Inbox/530_1.KAP
>> Nov 13 19:03:40 iPad-maitai kernel[0] <Notice>: Sandbox: qtVlm(484) deny(1) 
>> file-read-data /dev/tty
>> Nov 13 19:03:40 iPad-maitai qtVlm[484] <Warning>: qwarning received: 
>> starting up nslogmessage
>> Nov 13 19:03:40 iPad-maitai qtVlm[484] <Warning>: qwarning received: step 2
>> Nov 13 19:03:40 iPad-maitai qtVlm[484] <Warning>: qwarning received: step 3
>> Nov 13 19:03:40 iPad-maitai qtVlm[484] <Warning>: qwarning received: step 4
>> Nov 13 19:03:40 iPad-maitai qtVlm[484] <Warning>: <CATransformLayer: 
>> 0x15da1ee0> - changing property masksToBounds in transform-only layer, will 
>> have no effect
>> Nov 13 19:03:40 iPad-maitai qtVlm[484] <Warning>: <CATransformLayer: 
>> 0x15da4680> - changing property masksToBounds in transform-only layer, will 
>> have no effect
>> Nov 13 19:03:40 iPad-maitai qtVlm[484] <Warning>: <CATransformLayer: 
>> 0x15d50730> - changing property masksToBounds in transform-only layer, will 
>> have no effect
>> Nov 13 19:03:40 iPad-maitai qtVlm[484] <Warning>: qwarning received: step 5 
>> just before qApp->exec()
>> Nov 13 19:03:41 iPad-maitai kernel[0] <Notice>: 024305.657672 wlan0.W[123] 
>> AWDL MODE: OFF
>> Nov 13 19:03:57 iPad-maitai backboardd[63] <Warning>: CoreAnimation: updates 
>> deferred for too long
>> Nov 13 19:03:59 iPad-maitai SpringBoard[48] <Warning>: Forcing crash report 
>> of <FBApplicationProcess: 0x192412a0; qtVlm; pid: 484> (reason: 1, 
>> description: com.meltemus.qtvlm failed to scene-create after 19.68s (launch 
>> took 0.32s of total time limit 20.00s))
>> (...)
>> 
>> The full story is that I override QIOSApplicationDelegate to be able to 
>> manage didFinishLaunchingWithOptions and openUrl methods, but even if I 
>> remove my implementations and let Qt regular QIOSApplicationDelegate load, I 
>> get the same crash. I can see that main.cpp reaches the point where it calls 
>> qApp->exec() and stays stuck there until a timeout of some sort occurs. I 
>> can see that didFinishLaunchingWithOptions is called if I activate my own 
>> delegate, as you can read from the log. But anyway with or without my own 
>> delegate, I get this crash when I launch the app through a file opening. 
>> What is this message about CoreAnimation taking too long that I don't get 
>> when I launch the app normally?
>> 
>> If I launch the application by clicking on the icon, it works and takes less 
>> than 2secs to load, and it will even accept all incoming files through 
>> openUrl. didFinishLaunchingWithOptions is called at startup too, but with no 
>> url as expected.
>> 
>> I am sure that was working before with qt 5.4.2.
>> 
>> What should I do to make this working? And btw what is the recommended way 
>> to override QIOSApplicationDelegate in order not to be annoyed each time a 
>> new qt version is released, and still be able to handle openUrl and such?
>> 
>> Thanks in advance
>> Philippe Lelong
>> _______________________________________________
>> Interest mailing list
>> Interest@qt-project.org
>> http://lists.qt-project.org/mailman/listinfo/interest
> 
> This email and any files transmitted with it from The Charles Machine Works, 
> Inc. are confidential and intended solely for the use of the individual or 
> entity to which they are addressed. If you have received this email in error 
> please notify the sender. Our company accepts no liability for the contents 
> of this email, or for the consequences of any actions taken on the basis of 
> the information provided, unless that information is subsequently confirmed 
> in writing. Please note that any views or opinions presented in this email 
> are solely those of the author and do not necessarily represent those of the 
> company. Finally, the recipient should check this email and any attachments 
> for the presence of viruses. The company accepts no liability for any damage 
> caused by any virus transmitted by this email.
 

Links:
------
[1] http://imap.gmail.com/INBOX.imapmbox/Attachments/2126/2/530_1.KAP
[2]
https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/ProgrammingWithObjectiveC/CustomizingExistingClasses/CustomizingExistingClasses.html
_______________________________________________
Interest mailing list
Interest@qt-project.org
http://lists.qt-project.org/mailman/listinfo/interest

Reply via email to