cordova-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Shazron Abdullah (JIRA)" <j...@apache.org>
Subject [jira] [Comment Edited] (CB-7606) handleOpenURL handler firing more than necessary
Date Thu, 12 Mar 2015 19:49:40 GMT

    [ https://issues.apache.org/jira/browse/CB-7606?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14359246#comment-14359246
] 

Shazron Abdullah edited comment on CB-7606 at 3/12/15 7:49 PM:
---------------------------------------------------------------

I re-tested it using cordova-cli 4.3.0 which contains cordova-ios 3.8.0, and it is working
with a cold start, and warm start.
Here is my updated test case.

{code}
cordova create CB7606 cb7606.test CB7606
cd CB7606
cordova platform add ios
open -a Xcode platforms/ios
{code}

Add your URL handler in Resources/Info.plist (Open as -> Source Code, add within the <dict>
at the end):
{code}
        <key>CFBundleURLTypes</key>
        <array>
            <dict>
                <key>CFBundleURLName</key>
                <string>myscheme</string>
                <key>CFBundleURLSchemes</key>
                <array>
                    <string>myscheme</string>
                </array>
            </dict>
        </array>
{code}

Add this at the top of the Staging/www/js/index.js file in Xcode Project Navigator:
{code}
function handleOpenURL(url) {
    setTimeout(function() {
               alert(url);
               }, 500);
}
{code}

*First we test warm start:*
1. Launch the app on device using Xcode
2. Press the Home button to put the app in the background
3. In Mobile Safari, enter the url "myscheme://warm" in the Location bar
4. Select the "Go" button on the keyboard
5. Wait until the app launches, and the alert should show

*Next we test cold start:*
1. Double press the Home button to show the app switcher
2. Kill the CB7606 app by flipping the card upwards
3. In Mobile Safari, enter the url "myscheme://cold" in the Location bar
4. Select the "Go" button on the keyboard
5. Wait until the app launches, and the alert should show



was (Author: shazron):
I re-tested it using cordova-cli 4.3.0 which contains cordova-ios 3.8.0, and it is working
with a cold start, and warm start.
Here is my updated test case.

{code}
cordova create CB7606 cb7606.test CB7606
cd CB7606
cordova platform add ios
open -a Xcode platforms/ios
{code}

Add your URL handler in Resources/Info.plist (Open as -> Source Code, add within the <dict>
at the end):
{code}
        <key>CFBundleURLTypes</key>
        <array>
            <dict>
                <key>CFBundleURLName</key>
                <string>myscheme</string>
                <key>CFBundleURLSchemes</key>
                <array>
                    <string>myscheme</string>
                </array>
            </dict>
        </array>
{code}

Add this at the top of the Staging/www/js/index.js file in Xcode Project Navigator:
{code}
function handleOpenURL(url) {
    setTimeout(function() {
               alert(url);
               }, 500);
}
{code}

*First we test warm start:*
1. Launch the app on device using Xcode
2. Press the Home button to put the app in the background
3. In Mobile Safari, enter the url "myscheme://warm" in the Location bar
4. Select the "Go" button on the keyboard
5. Wait until the app launches, and the alert should show

*Next we test cold start:*
1. Double press the Home button to show the app switcher
2. Kill the CB7606 app by flipping the card upwards
3. In Mobile Safari, enter the url "myscheme://warm" in the Location bar
4. Select the "Go" button on the keyboard
5. Wait until the app launches, and the alert should show


> handleOpenURL handler firing more than necessary
> ------------------------------------------------
>
>                 Key: CB-7606
>                 URL: https://issues.apache.org/jira/browse/CB-7606
>             Project: Apache Cordova
>          Issue Type: Bug
>          Components: iOS
>    Affects Versions: 3.5.0
>            Reporter: Paul Kane
>            Assignee: Shazron Abdullah
>             Fix For: 3.8.0
>
>
> I'm not an Obj-C or Cordova programmer so bear with me.
> Let's say my app is running. Then I hop over to my mail app and click on a link (myapp://blahBlahBlah)
that should open up my app. This works fine, the app opens, my own URL handler (in javascript)
takes over, etc.
> However in Obj-C the view controller is -- incorrectly, I believe -- storing that scheme
data (blahBlahBlah) in self.openURL (so that it can be picked up later in processOpenURL function,
called during webView initialization).
> This isn't normally a problem, except when you move to a new page (window.href = "/new_page"),
the webView initialization runs again and picks up the old (already-acted-upon) openURL variable.
(it's then set to nil, so that it doesn't get acted upon a third time, fourth time, etc...).
> I might have some details wrong, but it should be fairly easy to walk through with a
project-wide search for "openurl". Just seems like a slightly wrong logic-flow, which unfortunately
is interfering with my app.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscribe@cordova.apache.org
For additional commands, e-mail: issues-help@cordova.apache.org


Mime
View raw message