I have a phonegap application that is working perfectly through the local server on the phonegap development iOS app.
Specifically, a call to
var ref = cordova.InAppBrowser.open('https://subdomain.domain.com', '_blank', 'location=no');
works fine in the dev app, however when pushed to phonegap build and accessed via the app installed via testflight, using Hydration to update easily, the button is entirely unresponsive.
I have a feeling that none of the plugins are being loaded, as the status bar is malfunctioning as well.
Here is the relevant part of the config.xml file:
<plugin name="cordova-plugin-inappbrowser" spec="~1.7.0" />
<plugin name="cordova-plugin-statusbar" />
<plugin name="cordova-plugin-whitelist" spec="1.3.1" />
I know the insecurity of this, however, changing to the url i am trying to access does not change anything:
<allow-navigation href="*" />
<allow-intent href="*" />
<access origin="*" />
<platform name="android">
<allow-intent href="market:*" />
</platform>
<platform name="ios">
<allow-intent href="itms:*" />
<allow-intent href="itms-apps:*" />
<allow-intent href="*" />
</platform>
The button in question:
<span class="glyphicon glyphicon-shopping-cart" aria-hidden="true"></span> OR SIGN UP
The javascript relating to this button:
document.addEventListener("deviceready", function(){
deviceReadyDependantFunctions();
initializeApplication();
});
function deviceReadyDependantFunctions(){
alert('initialised!');
$('#signUpButton').unbind().click(function(){
console.log('here');
var ref = cordova.InAppBrowser.open('https://subdomain.domain.com?some=variable', '_blank', 'location=no');
ref.addEventListener('loadstart', function(event) { alert(event.url); });
console.log(ref);
});
}
Obviously, there's a bunch of debugging in there....
The "initialised" alert fires in all environments.
The event.url alert fires in the dev app but not in the test flight, hydrated application.
I have been trying everything I can find to rectify this... The only solution I have found is to use a simple href="theUrl.com" and let the system browser load it. Which is not a solution at all... I need to load the url in the app. It's a sign up page and is essential that it can be accessed from the app.
Things I have tried:
Every permeation of whitelisting, although there are varying docs saying that in app browser is/isn't affected by the whitelist plugin.
Using a different version of phonegap (<preference name="phonegap-version" value="cli-6.5.0" />) to no avail.
Checked that the plugins are present in the phonegap build "plugins" tab. They are.
Tried replacing the reference to cordova.js with phonegap.js. This didn't work at all.
The order of loading js files (the above call to inappbrowser is in a seperate js file). No difference.
What am I doing wrong?!
Or is there something weird with the TestFlight/Hydrated Application combination?
You can see the ridiculous commits I have made, as well as the full codebase here:
https://github.com/andycharrington/yfa/commits/master
Any advice would be massively appreciated.
Thank you.
Recompiling the unchanged code with Phone Gap Build this morning seemed to magically fix it. Don't you just love it when that happens? :)
Related
i have an app build on vuejs and build with cordova. after i cordova build ios it successfully build the app but when i cordova emulate ios it is only showing app.vue components but not other components. the app.vue content is nav.vue. it only show the nav bar and make the other white screen. can someone please help me to solve this problem.
</platform>
<platform name="ios">
<allow-intent href="itms:*" />
<allow-intent href="itms-apps:*" />
<splash src="res/screen/ios/icon.png" />
</platform>
<access origin="about:*" />
<allow-navigation href="about:" />
<access origin="tel:" launch-external="yes" />
<access origin="mailto:" launch-external="yes" />
<preference name="scheme" value="app" />
this is my config.xml
Please try using the Safari Developer Tools on Mac to connect to your test device and check out the JavaScript console. Often times you will see the error there. On Android you can do this with Chrome.
I am answering my question. i solve this problem by just change the vue route history mode in to hash mode
like shown below
const router = new VueRouter({
mode: "hash",
base: process.env.BASE_URL,
routes,
});
and add the below code in vue.config.js file
devServer:{
https:false
}
I updated cordova yesterday and added the iOS platform (cordova-ios#^6.1.0). I am trying to make an AJAX call via the XCODE simulator and it is failing with the following output:
{"readyState":"0", "responseText":"", "status":0,"statusText":"error"}
I installed cordova-plugin-whitelist plugin and added the following lines to config.xml:
<access origin="http://*" />
<access origin="https://*" />
<allow-navigation href="*" />
I have also added the following meta tag to the page:
Any help would be greatly appreciated!
Turns out the issue was with the server being called, a PHP API.
Adding the following allowed the AJAX request to succeed:
<?php
header("Access-Control-Allow-Origin: *");
?>
Please see attached snippet I am using for inappbrowser. I have used '_blank' with location and toolbar=yes the link opens in the inappbrowser, but there is no back button or done button.
I have tried replacing '_blank' with '_self', but this doesn't make any difference.
Since this wasn't working for me, I decided it's best to open the link in the system browser and replaced '_self' with '_system', but this does not work. The link does not open at all.
All 3 run fine when i test it in the browser, but when simulating it on the iOS simulator or when testing on the iOS device, I face the above issues.
I have read a lot of posts on stack overflow and on the ionic forum and tried almost all solutions provided, but none have worked for me. It seems to be a bug in using ionic with iOS. Anyone have any other solutions?
〈a ng-href="https://facebook.com" target="_self" ng-click="cordova.InAppBrowser.open('https://facebook.com','_self', 'location=yes, toolbar=yes'); return false;"〉test〈/a〉
Ionic 1, Xcode Version 8.3.2, iOS 9, cordova-plugin-inappbrowser spec="^1.7.1"
I have checked in my previous app. code is working fine.
check this github repo for example code: https://github.com/varunaaruru/ionic1-inappbrowser
install the plugin :
ionic cordova plugin add cordova-plugin-inappbrowser
in html file :
<a href="#" onclick="window.open('http://www.facebook.com', '_system', 'location=yes'); return false;">
click here
</a>
you can use blank or self in place of system
This fixed the problem for me. Add the following code is in your config.xml file if it isn't already present:
<allow-intent href="http://*/*" />
<allow-intent href="https://*/*" />
<allow-intent href="tel:*" />
<allow-intent href="sms:*" />
<allow-intent href="mailto:*" />
<allow-intent href="geo:*" />
Add the href depending on the hyperlink you are using in your project.
Add the below lines:
const iosoption: InAppBrowserOptions = {
zoom: 'no',
location:'yes',
toolbar:'yes',
clearcache: 'yes',
clearsessioncache: 'yes',
disallowoverscroll: 'yes',
enableViewportScale: 'yes'
}
if (this.platform.is('ios')) {
browser = this.inAppBrowser.create(this.ValidateUsers, '_blank', iosoption);
}
I had the same issue referred on this link. So to resolve the issue i did what klaus-donnert did,and also went here to download the latest plugin.... below is my xml file:
<preference name="phonegap-version" value="cli-6.4.0" />
<plugin name="cordova-plugin-mauron85-background-geolocation" spec="^2.2.5">
<variable name="ALWAYS_USAGE_DESCRIPTION" value="This app requires background tracking enabled to calculate the distance between you and Ecocompub partners" />
</plugin>
Next step was to test the app on my android, so after uploading the zip on phonegap.build, i read the qr code as usual, and .... the app crashed! it opens for a few seconds, but then closes...if i simply don´t use the plugin, the app runs well...does anybody experienced this problem?, i´m completely stuck.
Regards
So to help others that might have the same situation, the problem is NOT with the background mauron85 plugin, it was with my phonegap-plugin-push which was outdated since i was using cli-6.4.0...so if you want to use both plugins, you have to have on your xml file the following:
for background geolocation mauron85 plugin:
<preference name="phonegap-version" value="cli-6.4.0" />
<plugin name="cordova-plugin-mauron85-background-geolocation" spec="^2.2.5">
<variable name="ALWAYS_USAGE_DESCRIPTION" value="set this value, otherwise apple will refuse your app" />
</plugin>
for push-plugin from here:
<plugin name="phonegap-plugin-push" spec="1.8.4" source="npm">
Regards.
We integrated RTCMultiConnection Demos cordva code in iOS app and also add iOS native code into it.
need to confirm one thing that how it will be linked with our web code i.e if i will call from my IOS app then how it will get connected within my website . Please confirm if possible and how.
Thanks in Advance plus Happy New Year
Your cordova app sets socketURL:
connection.socketURL = 'https://domain.com:9001/';
Your cordova app has a file named as loadRTCMultiConnection.js. This file MUST be using same RTCMultiConnection distribution as the your web page.
Conclusion:
Your cordova app MUST set socketURL parameter
Your cordova app MUST be using same RTCMultiConnection.js
Explanation:
socketURL is used to access your socket.io server. Both cordova app and web-browsers are using same socket.io server.
Updated at Jan 03, 2017
To use Firebase in the RTCMultiConnection-cordova-apps:
Open index.html and replace socket.io.js with Firebase.js
Add this script in the same index.html file: <script src="js/globals.js"></script>
Add this script in the same HTML file: <script src="js/FirebaseConnection.js"></script>
Opne index.js and add this line: connection.setCustomSocketHandler(FirebaseConnection);
As well as this line: connection.firebase = 'webrtc-experiment';
To recap it:
<!-- index.html file -->
<script src="js/Firebase.js"></script>
<script src="js/globals.js"></script>
<script src="js/FirebaseConnection.js"></script>
and:
// index.js
var connection = new RTCMultiConnection();
connection.setCustomSocketHandler(FirebaseConnection);
connection.firebase = 'webrtc-experiment';
PS. You may need to modify config.xml to enable websocket or XHR_polling requests from firebase.com. Simply replace rtcmulticonnection.herokuapp.com with firebase.com. E.g.
<?xml version='1.0' encoding='utf-8'?>
<widget>
<platform name="android">
<allow-navigation href="https://firebase.com/*" />
<allow-intent href="https://firebase.com/*" />
<access origin="https://firebase.com" />
</platform>
</widget>