How to check if phonegap app using WKWebview - ios

Could not find information. I built pg app with 'cordova-plugin-wkwebview-engine'.
How to check if phonegap web app on ios 9.2 is really using WKWebview? Could not find info how userAgent string should look like for WKWebView.

Previous answer doesn't work on iOS 10, but you can use this code
if (window.webkit) {
//WKWebView
}
Old answer:
You can check for indexedDB
if (window.indexedDB) {
//WKWebView
}

Related

Safari 14.1.2 - Can't find variable: MediaRecorder

According to https://caniuse.com/?search=mediarecorder the MediaRecorder API has been supported by Safari and Safari on iOS since version 14. However when I try to use it I'm getting 'Can't find variable: MediaRecorder'
Am I instantiating this in the wrong way? Here's a code snippet
this.videoRecorder = new MediaRecorder(mediaStream, {
mimeType: "video/webm",
audioBitsPerSecond: 128000
});
and, for just audio
this.audioRecorder = new MediaRecorder(mediaStream, {
audioBitsPerSecond: 128000
});
Any pointers much appreciated!
I've found that mediaRecorder is still an experimental feature that needs to be enabled on Safari on Mac OS. It's enabled on iOS, the problems I was having on that platform were unrelated.

How to check latest version of iOS in Swift without using #available?

How can we check if the OS running on iPhone is the latest one. Is there any API for that?
For example, user is using iOS 14.6, so I want to know if its the latest version that he is using
I know this code is for checking, what OS user is having. This is not the answer at all. Please read the question before closing
if (#available(iOS 14.6, *)) {
// Use iOS 11 APIs.
} else {
// Alternative code for earlier versions of iOS.
}
No there is no way except available only if you created a personal Api to provide this info for your app automatically when opened

Appcelerator - share link on Facebook

I have problem sharing a link on Facebook in my app made with Appcelerator
I’m using iOS 11 Simulator, Titanium SDK 7.1 and Facebook Module 5.8.
My tiapp.xml should be correct.
The facebook app is not installed on the simulator.
My code is:
var fb = require('facebook');
fb.initialize();
function shareLink() {
fb.addEventListener('shareCompleted', onShareCompleted);
fb.presentShareDialog({
link: "http://www.google.com"
});
}
function onShareCompleted(e){
fb.removeEventListener('shareCompleted', onShareCompleted);
if (e.success) Ti.API.info('Share request succeeded.');
else Ti.API.info('Failed to share.' + JSON.stringify(e));
}
When I try to share, the app show me a webpage of facebook with the error “The parameter ‘href’ or ‘media’ is required”.
If I switch the Facebook module from version 5.8 to 5.6, the first time I try to share, it fails, but the second time it work!
I can’t understand where I’m wrong.
Thanks for any help!
Try this. Its super easy and I always use it for social sharing:
https://github.com/ricardoalcocer/socialshare/tree/master/app/widgets/com.alcoapps.socialshare

Facebook SDK iOS - how to set Application ID dynamically from code?

I'm trying to set the Facebook's AppId from code, so I can choose to which app to connect to (between 2 apps, one of them is a test app).
Basically I'm looking for an equivalent for Android's SDK call:
FacebookSdk.setApplicationId(ACTIVE_APP_ID);
I'm aware of the deprecated iOS call:
[FBSettings setDefaultAppID:ACTIVE_APP_ID];
But can't seem to find alternative to it.
I'm using SDK ver 4.22.1. Thanks!
FacebookSDK v4.44.1 swift 5 - Set the Facebook App ID used by the SDK:
Settings.appID = "YOUR-FACEBOOK-APPLICATION-IDENTIFIER"
Settings.displayName = "YOUR-FACEBOOK-DISPLAY-NAME"
That's the way I have managed to set it programmatically and override the default settings at the info.plist file.
Maybe you can try :
[FBSDKSettings setAppID:ACTIVE_APP_ID];
(I am using version 4.29.0 of FBSDK).

Open Settings App from another App in iOS - React Native

I'm going through the docs in React Native and can only find navigating to external links from the app I am in.
I want to be able to navigate to the Settings app (more specifically to the privacy > location services page) but, can not seem to find the necessary information on it. There is the native iOS way of doing it which I am trying to replicate through React Native.
Is this possible?
I have tried the following to detect if there is a Settings URL. The console logs that the Settings url works however, it does not navigate to that page.
Update: thanks to #zvona I am now navigating to the settings page but not sure how to get to a specific deep link.
Linking.canOpenURL('app-settings:').then(supported => {
console.log(`Settings url works`)
Linking.openURL('app-settings:'
}).catch(error => {
console.log(`An error has occured: ${error}`)
})
You can access settings of the application with:
Linking.openURL('app-settings:');
But I don't know (yet) how to open a specific deep-link.
2021 update use:
Linking.openSettings();
otherwise your app will be rejected due use of non-public URL scheme
I successfully opened the settings by the code below, hope it's helpful :)
Linking.canOpenURL('app-settings:').then(supported => {
if (!supported) {
console.log('Can\'t handle settings url');
} else {
return Linking.openURL('app-settings:');
}
}).catch(err => console.error('An error occurred', err));
Reference: https://facebook.github.io/react-native//docs/linking.html
Since React Native version 0.59 this should be possible using openSettings();. This is described in the React Native Linking documentation. Although it did not work for me. When I tried quickly I saw a _reactNative.Linking.openSettings is not a function error message.
Linking.openSettings();
You can deep-link referencing the settings's index like so:
Linking.openURL('app-settings:{index}')
For example Linking.openURL('app-settings:{3}') would open the Bluetooth settings.
Linking.openURL('app-settings:1');
Adding an answer that worked for me and is easy to apply.
openSettings function in #react-native-community/react-native-permissions works for both iOS and Android.
Calling openSettings function will direct the user to the settings page of your app.
import { openSettings } from 'react-native-permissions';
openSettings();
You can import Linking from 'react-native' and then use Linking.openSettings() to trigger the call. This link explains it very concisely:
https://til.hashrocket.com/posts/eyegh79kqs-how-to-open-the-settings-app-in-reactnative-060
For example: to navigate under Settings/Bluetooth you have to use Linking.openURL('App-Prefs:Bluetooth');
For iOS 14 and ReactNative 16.13
You can use the most easiest way to open the app setting from react-native.
just,
import { Linking } from 'react-native';
and user below line anywhere you want open the app setting.
Linking.openSettings();
Old question, but this didn't work for me on Android and I found something that did. Hope this helps anyone looking for the same. :)
https://github.com/lunarmayor/react-native-open-settings
I don't have the ability to test it for iOS though.
Opens the platform specific settings for the given application.
You can handle your case using Linking from react-native. In my case, I accessed the touch id settings on IOS using:-
Linking.openURL('App-Prefs:PASSCODE');

Resources