[
https://issues.apache.org/jira/browse/CB-9485?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Tom Brückner updated CB-9485:
-----------------------------
Description:
I'm building a hybrid app and wanted to use the openProcessURL() mechanism to
transfer data from the native side to the webapp. The data consists of a rather
large string.
Here I noticed, that this URL will get shortened using an ellipsis (...) and
thus not transfered correctly to the webapp.
I tracked the problem down to its root cause. The problem is that NSURL
automatically shortens URLs if you are just converting it into a string. This
"feature" is also described here:
http://stackoverflow.com/questions/30764851/nsurl-urlwithstring-is-shortening-very-long-strings-with-an-ellipsis-crea
Cordova iOS uses this kind of direct string conversion before the URL is handed
over to the native side. In Cordova 3.7.0 (which I'm using), this happens in
CDVViewController.m (processOpenURL). In the latest Cordova development branch,
the same happens in CDVHandleOpenURL.m (handleOpenURL).
In both cases, the errorneous conversion / shortening is a side-effect of the
call to [NSString stringWithFormat], where the NSURL is handed over as a
string. This causes ellipsis generation.
As described in the stack overflow question linked above, the problem does not
occur if the parts of the URL (e.g. the path or the query) are converted
seperately, and I can confirm that.
To fix the problem, you can replace
NSString* jsString = [NSString stringWithFormat:@"if (typeof handleOpenURL ===
'function') { handleOpenURL(\"%@\");}", url];
with
NSString* jsString = [NSString stringWithFormat:@"if (typeof handleOpenURL ===
'function') { handleOpenURL(\"%@\");}", url.absoluteString];
The .absoluteString retrieves the unaltered URL, this patch worked for me.
was:
I'm building a hybrid app and wanted to use the openProcessURL() mechanism to
transfer data from the native side to the webapp. The data consists of a rather
large string.
Here I noticed, that this URL will get shortened using an ellipsis (...) and
thus not transfered correctly to the webapp.
I tracked the problem down to its root cause. The problem is that NSURL
automatically shortens URLs if you are just converting it into a string. This
"feature" is also described here:
http://stackoverflow.com/questions/30764851/nsurl-urlwithstring-is-shortening-very-long-strings-with-an-ellipsis-crea
Cordova iOS uses this kind of direct string conversion before the URL is handed
over to the native side. In Cordova 3.7.0 (which I'm using), this happens in
CDVViewController.m (processOpenURL). In the latest Cordova development branch,
the same happens in CDVHandleOpenURL.m (handleOpenURL).
In both cases, the errorneous conversion / shortening is a side-effect of the
call to [NSString stringWithFormat], where the NSURL is handed over as a
string. This causes ellipsis generation.
As described in the stack overflow question linked above, the problem does not
occur if the parts of the URL (e.g. the path or the query) are converted
seperately, and I can confirm that.
To fix the problem, please replace
NSString* jsString = [NSString stringWithFormat:@"if (typeof handleOpenURL ===
'function') { handleOpenURL(\"%@\");}", url];
with
NSString* jsString = [NSString stringWithFormat:@"if (typeof handleOpenURL ===
'function') { handleOpenURL(\"%@\");}", url.absoluteString];
The .absoluteString retrieves the unaltered URL.
> processOpenURL shortens long URLs with ellipsis
> -----------------------------------------------
>
> Key: CB-9485
> URL: https://issues.apache.org/jira/browse/CB-9485
> Project: Apache Cordova
> Issue Type: Bug
> Components: iOS
> Affects Versions: 3.7.0
> Environment: iOS
> Reporter: Tom Brückner
>
> I'm building a hybrid app and wanted to use the openProcessURL() mechanism to
> transfer data from the native side to the webapp. The data consists of a
> rather large string.
> Here I noticed, that this URL will get shortened using an ellipsis (...) and
> thus not transfered correctly to the webapp.
> I tracked the problem down to its root cause. The problem is that NSURL
> automatically shortens URLs if you are just converting it into a string. This
> "feature" is also described here:
> http://stackoverflow.com/questions/30764851/nsurl-urlwithstring-is-shortening-very-long-strings-with-an-ellipsis-crea
> Cordova iOS uses this kind of direct string conversion before the URL is
> handed over to the native side. In Cordova 3.7.0 (which I'm using), this
> happens in CDVViewController.m (processOpenURL). In the latest Cordova
> development branch, the same happens in CDVHandleOpenURL.m (handleOpenURL).
> In both cases, the errorneous conversion / shortening is a side-effect of the
> call to [NSString stringWithFormat], where the NSURL is handed over as a
> string. This causes ellipsis generation.
> As described in the stack overflow question linked above, the problem does
> not occur if the parts of the URL (e.g. the path or the query) are converted
> seperately, and I can confirm that.
> To fix the problem, you can replace
> NSString* jsString = [NSString stringWithFormat:@"if (typeof handleOpenURL
> === 'function') { handleOpenURL(\"%@\");}", url];
> with
> NSString* jsString = [NSString stringWithFormat:@"if (typeof handleOpenURL
> === 'function') { handleOpenURL(\"%@\");}", url.absoluteString];
> The .absoluteString retrieves the unaltered URL, this patch worked for me.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]