> ## Documentation Index
> Fetch the complete documentation index at: https://docs.proof.community/llms.txt
> Use this file to discover all available pages before exploring further.

# Mobile Integration

> iOS and Android setup for camera permissions, Apple Pay, and Google Pay

The Proof widget runs inside a browser container on mobile. Different containers have different compatibility with Apple Pay, Google Pay, and the verification camera.

## iOS

### Camera permission (verification)

The identity-verification liveness check requires camera access. Add to your `Info.plist`:

```xml theme={null}
<key>NSCameraUsageDescription</key>
<string>Required for identity verification</string>
```

### WKWebView setup

If embedding the widget inside a `WKWebView`:

```swift theme={null}
let configuration = WKWebViewConfiguration()
configuration.allowsInlineMediaPlayback = true

let webView = WKWebView(frame: .zero, configuration: configuration)
```

### Apple Pay compatibility

| Container                     | Apple Pay       |
| ----------------------------- | --------------- |
| Safari                        | ✅ Works         |
| WKWebView                     | ✅ Works         |
| Chromium-based in-app browser | ❌ Does not work |

<Note>
  If Apple Pay matters for your users, make sure the widget opens in Safari or WKWebView — not in a Chromium-based in-app browser.
</Note>

***

## Android

### Recommended: Chrome Custom Tabs

<Tip>
  Use Chrome Custom Tabs for the best compatibility. Google Pay works, the camera works, and no extra configuration is needed.
</Tip>

```java theme={null}
CustomTabsIntent.Builder builder = new CustomTabsIntent.Builder();
CustomTabsIntent customTabsIntent = builder.build();
customTabsIntent.launchUrl(context, Uri.parse(widgetUrl));
```

### WebView setup

If you use `WebView` instead of Chrome Custom Tabs:

**AndroidManifest.xml:**

```xml theme={null}
<uses-permission android:name="android.permission.CAMERA" />
```

**WebView settings:**

```java theme={null}
webView.getSettings().setJavaScriptEnabled(true);
webView.getSettings().setMediaPlaybackRequiresUserGesture(false);
webView.setWebChromeClient(new WebChromeClient() {
    @Override
    public void onPermissionRequest(PermissionRequest request) {
        request.grant(request.getResources());
    }
});
```

### Google Pay compatibility

| Container          | Google Pay      |
| ------------------ | --------------- |
| Chrome Custom Tabs | ✅ Works         |
| WebView            | ❌ Does not work |

<Warning>
  Google Pay does not work in Android WebView. If your users need Google Pay, use Chrome Custom Tabs.
</Warning>

***

## Compatibility summary

| Feature             | iOS Safari | iOS WKWebView | Android Custom Tabs | Android WebView |
| ------------------- | ---------- | ------------- | ------------------- | --------------- |
| Verification camera | ✅          | ✅             | ✅                   | ✅ (with config) |
| Apple Pay           | ✅          | ✅             | ❌                   | ❌               |
| Google Pay          | ❌          | ❌             | ✅                   | ❌               |
