
Security News
vlt Launches "reproduce": A New Tool Challenging the Limits of Package Provenance
vlt's new "reproduce" tool verifies npm packages against their source code, outperforming traditional provenance adoption in the JavaScript ecosystem.
react-native-inappbrowser-reborn
Advanced tools
$ npm install react-native-inappbrowser-reborn --save
$ react-native link react-native-inappbrowser-reborn
Libraries
➜ Add Files to [your project's name]
node_modules
➜ react-native-inappbrowser-reborn
and add RNInAppBrowser.xcodeproj
libRNInAppBrowser.a
to your project's Build Phases
➜ Link Binary With Libraries
Cmd+R
)<ios/Podfile
pod 'RNInAppBrowser', :path => '../node_modules/react-native-inappbrowser-reborn'
pod install
android/app/src/main/java/[...]/MainActivity.java
import com.proyecto26.inappbrowser.RNInAppBrowserPackage;
to the imports at the top of the filenew RNInAppBrowserPackage()
to the list returned by the getPackages()
methodandroid/settings.gradle
:
include ':react-native-inappbrowser-reborn'
project(':react-native-inappbrowser-reborn').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-inappbrowser-reborn/android')
android/app/build.gradle
:
implementation project(':react-native-inappbrowser-reborn')
Methods | Action |
---|---|
open | Opens the url with Safari in a modal on iOS using SFSafariViewController, and Chrome in a new custom tab on Android. On iOS, the modal Safari will not share cookies with the system Safari. |
close | Dismisses the system's presented web browser |
openAuth | Opens the url with Safari in a modal on iOS using SFAuthenticationSession, and Chrome in a new custom tab on Android. On iOS, the user will be asked whether to allow the app to authenticate using the given url. |
closeAuth | Dismisses the current authentication session |
isAvailable | Detect if the device supports this plugin |
import InAppBrowser from 'react-native-inappbrowser-reborn';
...
async openLink() {
try {
await InAppBrowser.isAvailable()
InAppBrowser.open('https://www.google.com', {
// iOS Properties
dismissButtonStyle: 'cancel',
preferredBarTintColor: 'gray',
preferredControlTintColor: 'white',
readerMode: false,
// Android Properties
showTitle: true,
toolbarColor: '#6200EE',
secondaryToolbarColor: 'black',
enableUrlBarHiding: true,
enableDefaultShare: true,
forceCloseOnRedirection: false,
// Specify full animation resource identifier(package:anim/name)
// or only resource name(in case of animation bundled with app).
animations: {
startEnter: 'slide_in_right',
startExit: 'slide_out_left',
endEnter: 'slide_in_right',
endExit: 'slide_out_left',
},
headers: {
'my-custom-header': 'my custom header value'
},
}).then((result) => {
Alert.alert(JSON.stringify(result))
})
} catch (error) {
Alert.alert(error.message)
}
}
...
import { Platform } from 'react-native'
export const getDeepLink = (path = "") => {
const scheme = 'my-scheme'
const prefix = Platform.OS == 'android' ? `${scheme}://my-host/` : `${scheme}://`
return prefix + path
}
import { Root } from 'native-base'
import { getDeepLink } from './utilities'
import { createStackNavigator } from 'react-navigation'
const Main = createStackNavigator(
{
LoginComponent: { screen: LoginComponent },
HomeComponent: { screen: HomeComponent },
SplashComponent: { //Redirect users to the Home page if they are authenticated, otherwise to Login page...
screen: SplashComponent,
path: 'callback/' //Deep linking to get the auth_token
}
},
{
index: 0,
initialRouteName: 'SplashComponent',
headerMode: 'none'
}
)
...
render() {
return (
<Root>
<Main uriPrefix={getDeepLink()} />
</Root>
)
}
...
import { Linking } from 'react-native'
import InAppBrowser from 'react-native-inappbrowser-reborn'
import { getDeepLink } from './utilities'
...
async onLogin() {
const deepLink = getDeepLink("callback")
const url = `https://my-auth-login-page.com?redirect_uri=${deepLink}`
try {
await InAppBrowser.isAvailable()
InAppBrowser.openAuth(url, deepLink, {
// iOS Properties
dismissButtonStyle: 'cancel',
// Android Properties
showTitle: false,
enableUrlBarHiding: true,
enableDefaultShare: true,
}).then((response) => {
if (response.type === 'success' &&
response.url) {
Linking.openURL(response.url)
}
})
} catch (error) {
Linking.openURL(url)
}
}
...
...
componentWillMount() {
const { navigation } = this.props
const { state: { params } } = navigation
const { access_token } = params || {}
if (access_token) {
// Opened by deep linking, the user is authenticated
// Redirect to the Home page
}
else {
// Detect if the stored token is still valid
// And redirect the user to Home or Login page
}
}
...
The StatusBar will keep the last one provided in your app. So if the StatusBar is dark-content
before you open the browser this will keep it. If you want to change before opening you can do something like
async openInBrowser(url) {
try {
StatusBar.setBarStyle('dark-content')
await InAppBrowser.open(url)
} catch (error) {
Alert.alert(error.message);
}
})
Juan Nicholls | Emanuel Quimper | Jonathan Bones | Mihai Lazari | Kalle Haavisto | Worapot Pengsuk | Adam McArthur |
I believe in Unicorns 🦄 Support me, if you do too.
Made with ❤️
FAQs
InAppBrowser for React Native
The npm package react-native-inappbrowser-reborn receives a total of 69,252 weekly downloads. As such, react-native-inappbrowser-reborn popularity was classified as popular.
We found that react-native-inappbrowser-reborn demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
vlt's new "reproduce" tool verifies npm packages against their source code, outperforming traditional provenance adoption in the JavaScript ecosystem.
Research
Security News
Socket researchers uncovered a malicious PyPI package exploiting Deezer’s API to enable coordinated music piracy through API abuse and C2 server control.
Research
The Socket Research Team discovered a malicious npm package, '@ton-wallet/create', stealing cryptocurrency wallet keys from developers and users in the TON ecosystem.