Capacitor plugin in app browser with urlChangeEvent
npm install @capgo/inappbrowser
npx cap sync
import { InAppBrowser } from '@capgo/inappbrowser'
InAppBrowser.open({ url: "YOUR_URL" });
Web platform is not supported. Use window.open
instead.
Add the following to your AndroidManifest.xml
file:
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<uses-permission android:name="android.permission.RECORD_AUDIO"/>
Then the permission will be asked when the camera is used.
Add the following to your Info.plist
file:
<key>NSCameraUsageDescription</key>
<string>We need access to the camera to record audio.</string>
Add the following to your AndroidManifest.xml
file:
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
Then the permission will be asked when the microphone is used.
Add the following to your Info.plist
file:
<key>NSMicrophoneUsageDescription</key>
<string>We need access to the microphone to record audio.</string>
open(...)
clearCookies(...)
clearAllCookies()
clearCache()
getCookies(...)
close()
openWebView(...)
executeScript(...)
postMessage(...)
setUrl(...)
addListener('urlChangeEvent', ...)
addListener('buttonNearDoneClick', ...)
addListener('closeEvent', ...)
addListener('confirmBtnClicked', ...)
addListener('messageFromWebview', ...)
addListener('browserPageLoaded', ...)
addListener('pageLoadError', ...)
removeAllListeners()
reload()
open(options: OpenOptions) => Promise<any>
Open url in a new window fullscreen
Param | Type |
---|---|
options |
OpenOptions |
Returns: Promise<any>
Since: 0.1.0
clearCookies(options: ClearCookieOptions) => Promise<any>
Clear cookies of url
Param | Type |
---|---|
options |
ClearCookieOptions |
Returns: Promise<any>
Since: 0.5.0
clearAllCookies() => Promise<any>
Clear all cookies
Returns: Promise<any>
Since: 6.5.0
clearCache() => Promise<any>
Clear cache
Returns: Promise<any>
Since: 6.5.0
getCookies(options: GetCookieOptions) => Promise<Record<string, string>>
Get cookies for a specific URL.
Param | Type | Description |
---|---|---|
options |
GetCookieOptions |
The options, including the URL to get cookies for. |
Returns: Promise<Record<string, string>>
close() => Promise<any>
Close the webview.
Returns: Promise<any>
openWebView(options: OpenWebViewOptions) => Promise<any>
Open url in a new webview with toolbars, and enhanced capabilities, like camera access, file access, listen events, inject javascript, bi directional communication, etc.
Param | Type |
---|---|
options |
OpenWebViewOptions |
Returns: Promise<any>
Since: 0.1.0
executeScript({ code }: { code: string; }) => Promise<void>
Injects JavaScript code into the InAppBrowser window.
Param | Type |
---|---|
__0 |
{ code: string; } |
postMessage(options: { detail: Record<string, any>; }) => Promise<void>
Sends an event to the webview. you can listen to this event with addListener("messageFromWebview", listenerFunc: (event: Record<string, any>) => void) detail is the data you want to send to the webview, it's a requirement of Capacitor we cannot send direct objects Your object has to be serializable to JSON, so no functions or other non-JSON-serializable types are allowed.
Param | Type |
---|---|
options |
{ detail: Record<string, any>; } |
setUrl(options: { url: string; }) => Promise<any>
Sets the URL of the webview.
Param | Type |
---|---|
options |
{ url: string; } |
Returns: Promise<any>
addListener(eventName: "urlChangeEvent", listenerFunc: UrlChangeListener) => Promise<PluginListenerHandle>
Listen for url change, only for openWebView
Param | Type |
---|---|
eventName |
'urlChangeEvent' |
listenerFunc |
UrlChangeListener |
Returns: Promise<PluginListenerHandle>
Since: 0.0.1
addListener(eventName: "buttonNearDoneClick", listenerFunc: ButtonNearListener) => Promise<PluginListenerHandle>
Param | Type |
---|---|
eventName |
'buttonNearDoneClick' |
listenerFunc |
ButtonNearListener |
Returns: Promise<PluginListenerHandle>
addListener(eventName: "closeEvent", listenerFunc: UrlChangeListener) => Promise<PluginListenerHandle>
Listen for close click only for openWebView
Param | Type |
---|---|
eventName |
'closeEvent' |
listenerFunc |
UrlChangeListener |
Returns: Promise<PluginListenerHandle>
Since: 0.4.0
addListener(eventName: "confirmBtnClicked", listenerFunc: ConfirmBtnListener) => Promise<PluginListenerHandle>
Will be triggered when user clicks on confirm button when disclaimer is required, works only on iOS
Param | Type |
---|---|
eventName |
'confirmBtnClicked' |
listenerFunc |
ConfirmBtnListener |
Returns: Promise<PluginListenerHandle>
Since: 0.0.1
addListener(eventName: "messageFromWebview", listenerFunc: (event: { detail: Record<string, any>; }) => void) => Promise<PluginListenerHandle>
Will be triggered when event is sent from webview, to send an event to the webview use window.mobileApp.postMessage({ "detail": { "message": "myMessage" } }) detail is the data you want to send to the webview, it's a requirement of Capacitor we cannot send direct objects Your object has to be serializable to JSON, so no functions or other non-JSON-serializable types are allowed.
This method is inject at runtime in the webview
Param | Type |
---|---|
eventName |
'messageFromWebview' |
listenerFunc |
(event: { detail: Record<string, any>; }) => void |
Returns: Promise<PluginListenerHandle>
addListener(eventName: "browserPageLoaded", listenerFunc: () => void) => Promise<PluginListenerHandle>
Will be triggered when page is loaded
Param | Type |
---|---|
eventName |
'browserPageLoaded' |
listenerFunc |
() => void |
Returns: Promise<PluginListenerHandle>
addListener(eventName: "pageLoadError", listenerFunc: () => void) => Promise<PluginListenerHandle>
Will be triggered when page load error
Param | Type |
---|---|
eventName |
'pageLoadError' |
listenerFunc |
() => void |
Returns: Promise<PluginListenerHandle>
removeAllListeners() => Promise<void>
Remove all listeners for this plugin.
Since: 1.0.0
reload() => Promise<any>
Reload the current web page.
Returns: Promise<any>
Since: 1.0.0
Prop | Type | Description | Since |
---|---|---|---|
url |
string |
Target URL to load. | 0.1.0 |
headers |
Headers |
Headers to send with the request. | 0.1.0 |
credentials |
Credentials |
Credentials to send with the request and all subsequent requests for the same host. | 6.1.0 |
isPresentAfterPageLoad |
boolean |
if true, the browser will be presented after the page is loaded, if false, the browser will be presented immediately. | 0.1.0 |
preventDeeplink |
boolean |
Prop | Type |
---|---|
username |
string |
password |
string |
Prop | Type |
---|---|
url |
string |
Prop | Type | Description |
---|---|---|
url |
string |
The URL of the cookie. |
key |
string |
The key of the cookie. |
value |
string |
The value of the cookie. |
Prop | Type |
---|---|
url |
string |
includeHttpOnly |
boolean |
Prop | Type | Description | Default | Since |
---|---|---|---|---|
url |
string |
Target URL to load. | 0.1.0 | |
headers |
Headers |
Headers to send with the request. | 0.1.0 | |
credentials |
Credentials |
Credentials to send with the request and all subsequent requests for the same host. | 6.1.0 | |
shareDisclaimer |
DisclaimerOptions |
share options | 0.1.0 | |
toolbarType |
ToolBarType |
Toolbar type | ToolBarType.DEFAULT |
0.1.0 |
shareSubject |
string |
Share subject | 0.1.0 | |
title |
string |
Title of the browser | 'New Window' |
0.1.0 |
backgroundColor |
BackgroundColor |
Background color of the browser, only on IOS | BackgroundColor.BLACK |
0.1.0 |
activeNativeNavigationForWebview |
boolean |
If true, active the native navigation within the webview, Android only | false |
|
disableGoBackOnNativeApplication |
boolean |
Disable the possibility to go back on native application, usefull to force user to stay on the webview, Android only | false |
|
isPresentAfterPageLoad |
boolean |
Open url in a new window fullscreen isPresentAfterPageLoad: if true, the browser will be presented after the page is loaded, if false, the browser will be presented immediately. | false |
0.1.0 |
isInspectable |
boolean |
Whether the website in the webview is inspectable or not, ios only | false |
|
isAnimated |
boolean |
Whether the webview opening is animated or not, ios only | true |
|
showReloadButton |
boolean |
Shows a reload button that reloads the web page | false |
1.0.15 |
closeModal |
boolean |
CloseModal: if true a confirm will be displayed when user clicks on close button, if false the browser will be closed immediately. | false |
1.1.0 |
closeModalTitle |
string |
CloseModalTitle: title of the confirm when user clicks on close button, only on IOS | 'Close' |
1.1.0 |
closeModalDescription |
string |
CloseModalDescription: description of the confirm when user clicks on close button, only on IOS | 'Are you sure you want to close this window?' |
1.1.0 |
closeModalOk |
string |
CloseModalOk: text of the confirm button when user clicks on close button, only on IOS | 'Close' |
1.1.0 |
closeModalCancel |
string |
CloseModalCancel: text of the cancel button when user clicks on close button, only on IOS | 'Cancel' |
1.1.0 |
visibleTitle |
boolean |
visibleTitle: if true the website title would be shown else shown empty | true |
1.2.5 |
toolbarColor |
string |
toolbarColor: color of the toolbar in hex format | '#ffffff'' |
1.2.5 |
showArrow |
boolean |
showArrow: if true an arrow would be shown instead of cross for closing the window | false |
1.2.5 |
ignoreUntrustedSSLError |
boolean |
ignoreUntrustedSSLError: if true, the webview will ignore untrusted SSL errors allowing the user to view the website. | false |
6.1.0 |
preShowScript |
String |
preShowScript: if isPresentAfterPageLoad is true and this variable is set the plugin will inject a script before showing the browser. This script will be run in an async context. The plugin will wait for the script to finish (max 10 seconds) | 6.6.0 | |
proxyRequests |
String |
proxyRequests is a regex expression. Please see this pr for more info. (Android only) | 6.9.0 | |
buttonNearDone |
{ ios: { iconType: 'sf-symbol' | 'asset'; icon: String; }; android: { iconType: 'asset'; icon: String; width?: number; height?: number; }; } |
buttonNearDone allows for a creation of a custom button. Please see buttonNearDone.md for more info. | 6.7.0 |
Prop | Type |
---|---|
title |
string |
message |
string |
confirmBtn |
string |
cancelBtn |
string |
Allows manipulation and formatting of text strings and determination and location of substrings within strings.
Prop | Type | Description |
---|---|---|
length |
number |
Returns the length of a String object. |
Method | Signature | Description |
---|---|---|
toString | () => string | Returns a string representation of a string. |
charAt | (pos: number) => string | Returns the character at the specified index. |
charCodeAt | (index: number) => number | Returns the Unicode value of the character at the specified location. |
concat | (...strings: string[]) => string | Returns a string that contains the concatenation of two or more strings. |
indexOf | (searchString: string, position?: number | undefined) => number | Returns the position of the first occurrence of a substring. |
lastIndexOf | (searchString: string, position?: number | undefined) => number | Returns the last occurrence of a substring in the string. |
localeCompare | (that: string) => number | Determines whether two strings are equivalent in the current locale. |
match | (regexp: string | RegExp) => RegExpMatchArray | null | Matches a string with a regular expression, and returns an array containing the results of that search. |
replace | (searchValue: string | RegExp, replaceValue: string) => string | Replaces text in a string, using a regular expression or search string. |
replace | (searchValue: string | RegExp, replacer: (substring: string, ...args: any[]) => string) => string | Replaces text in a string, using a regular expression or search string. |
search | (regexp: string | RegExp) => number | Finds the first substring match in a regular expression search. |
slice | (start?: number | undefined, end?: number | undefined) => string | Returns a section of a string. |
split | (separator: string | RegExp, limit?: number | undefined) => string[] | Split a string into substrings using the specified separator and return them as an array. |
substring | (start: number, end?: number | undefined) => string | Returns the substring at the specified location within a String object. |
toLowerCase | () => string | Converts all the alphabetic characters in a string to lowercase. |
toLocaleLowerCase | (locales?: string | string[] | undefined) => string | Converts all alphabetic characters to lowercase, taking into account the host environment's current locale. |
toUpperCase | () => string | Converts all the alphabetic characters in a string to uppercase. |
toLocaleUpperCase | (locales?: string | string[] | undefined) => string | Returns a string where all alphabetic characters have been converted to uppercase, taking into account the host environment's current locale. |
trim | () => string | Removes the leading and trailing white space and line terminator characters from a string. |
substr | (from: number, length?: number | undefined) => string | Gets a substring beginning at the specified location and having the specified length. |
valueOf | () => string | Returns the primitive value of the specified object. |
Prop | Type |
---|---|
index |
number |
input |
string |
Prop | Type | Description |
---|---|---|
source |
string |
Returns a copy of the text of the regular expression pattern. Read-only. The regExp argument is a Regular expression object. It can be a variable name or a literal. |
global |
boolean |
Returns a Boolean value indicating the state of the global flag (g) used with a regular expression. Default is false. Read-only. |
ignoreCase |
boolean |
Returns a Boolean value indicating the state of the ignoreCase flag (i) used with a regular expression. Default is false. Read-only. |
multiline |
boolean |
Returns a Boolean value indicating the state of the multiline flag (m) used with a regular expression. Default is false. Read-only. |
lastIndex |
number |
Method | Signature | Description |
---|---|---|
exec | (string: string) => RegExpExecArray | null | Executes a search on a string using a regular expression pattern, and returns an array containing the results of that search. |
test | (string: string) => boolean | Returns a Boolean value that indicates whether or not a pattern exists in a searched string. |
compile | () => this |
Prop | Type |
---|---|
index |
number |
input |
string |
Prop | Type |
---|---|
remove |
() => Promise<void> |
Prop | Type | Description | Since |
---|---|---|---|
url |
string |
Emit when the url changes | 0.0.1 |
Prop | Type | Description | Since |
---|---|---|---|
url |
string |
Emit when a button is clicked. | 0.0.1 |
Omit<HttpCookie, 'key' | 'value'>
Construct a type with the properties of T except for those in type K.
From T, pick a set of properties whose keys are in the union K
{
[P in K]: T[P];
}
Exclude from T those types that are assignable to U
T extends U ? never : T
Construct a type with a set of properties K of type T
{
[P in K]: T;
}
Omit<HttpCookie, 'key' | 'value'>
(state: UrlEvent): void
(state: {}): void
(state: BtnEvent): void
Members | Value |
---|---|
ACTIVITY |
"activity" |
NAVIGATION |
"navigation" |
BLANK |
"blank" |
DEFAULT |
"" |
Members | Value |
---|---|
WHITE |
"white" |
BLACK |
"black" |
Credits
capgo/inappbrowser 패키지 튜토리얼
@capgo/inappbrowser
패키지는 인앱 브라우저 창에서 URL을 열 수 있게 해주는 Capacitor 플러그인입니다. 다음은 이 패키지를 사용하는 방법에 대한 단계별 가이드입니다.
패키지를 설치하려면 프로젝트의 루트 디렉터리에서 다음 명령을 실행하세요.
npm install @capgo/inappbrowser
npx cap sync
1 @capgo/inappbrowser
패키지에서 InAppBrowser
클래스를 가져옵니다.
import { InAppBrowser } from '@capgo/inappbrowser';
2 'InAppBrowseropen' 메서드를 사용하여 새 전체 화면 창에서 URL을 엽니다.
InAppBrowser.open("YOUR_URL");
"YOUR_URL"
을 열려는 URL로 바꾸세요.
3 InAppBrowser
클래스에서 제공하는 다른 메서드를 사용할 수도 있습니다.
clearCookies
: 모든 쿠키 삭제close
: 인앱 브라우저 창을 닫습니다.openWebView
: 도구 모음을 사용하여 새 웹 보기에서 URL을 엽니다.setUrl
: 인앱 브라우저의 URL을 설정합니다.이러한 메서드에 대한 자세한 내용은 아래 API 섹션을 참조하세요.
@capgo/inappbrowser
패키지는 다음과 같은 API 메소드를 제공합니다:
open(options: OpenOptions)
: 새 전체 화면 창에서 URL을 엽니다. OpenOptions
개체를 매개변수로 사용합니다.clearCookies()
: 모든 쿠키 삭제close()
: 인앱 브라우저 창을 닫습니다.openWebView(options: OpenWebViewOptions)
: 도구 모음을 사용하여 새 웹 보기에서 URL을 엽니다. OpenWebViewOptions
개체를 매개변수로 사용합니다.setUrl(options: { url: string; })
: 인앱 브라우저의 URL을 설정합니다. url
속성이 있는 객체를 매개변수로 사용합니다.addListener('urlChangeEvent', ListenerFunc: UrlChangeListener)
: URL 변경 이벤트 수신 UrlChangeListener
함수를 매개변수로 사용addListener('closeEvent', ListenerFunc: UrlChangeListener)
: 닫기 이벤트 수신 UrlChangeListener
함수를 매개변수로 사용addListener('confirmBtnClicked', ListenerFunc: UrlChangeListener)
: 확인 버튼 클릭 이벤트 수신 UrlChangeListener
함수를 매개변수로 사용removeAllListeners()
: 모든 이벤트 리스너 제거이러한 메소드의 매개변수 및 반환 값에 대한 자세한 내용은 패키지 설명서를 참조하세요.
그리고 그게 다야! Capacitor의 인앱 브라우저 창에서 URL을 여는 @capgo/inappbrowser
패키지를 사용하는 방법을 배웠습니다. 즐거운 코딩 되세요!