PHPackages                             voicecode-bv/mobile-photos - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [File &amp; Storage](/categories/file-storage)
4. /
5. voicecode-bv/mobile-photos

ActiveNativephp-plugin[File &amp; Storage](/categories/file-storage)

voicecode-bv/mobile-photos
==========================

Save remote images and videos directly to the device photo library for NativePHP Mobile.

1.0.0(2mo ago)11MITKotlinPHP ^8.2

Since May 14Pushed 2mo agoCompare

[ Source](https://github.com/voicecode-bv/mobile-photos)[ Packagist](https://packagist.org/packages/voicecode-bv/mobile-photos)[ RSS](/packages/voicecode-bv-mobile-photos/feed)WikiDiscussions main Synced 3w ago

READMEChangelogDependencies (1)Versions (2)Used By (0)

NativePHP Mobile Photos
=======================

[](#nativephp-mobile-photos)

Save remote images and videos directly to the device photo library (camera roll on iOS, MediaStore gallery on Android) from a NativePHP Mobile app — no share sheet, no extra taps.

Installation
------------

[](#installation)

```
composer require voicecode-bv/mobile-photos
```

After install, register the plugin so it gets compiled into the native projects:

```
php artisan native:plugin:register voicecode-bv/mobile-photos
```

Then rebuild the iOS and Android projects through the usual NativePHP build flow.

### iOS notes

[](#ios-notes)

The plugin manifest declares `NSPhotoLibraryAddUsageDescription`. You can override the prompt copy by setting your own value in `nativephp/ios/NativePHP/Info.plist` — the plugin compiler will not overwrite a key that already exists.

The plugin uses iOS' **add-only** authorization (`PHAccessLevel.addOnly`), which means users don't have to give full photo library access just to save a single file.

### Android notes

[](#android-notes)

Requires Android 10 (API 29) or higher. Saves go through `MediaStore` so no runtime storage permission is needed.

Usage
-----

[](#usage)

### From PHP

[](#from-php)

```
use Voicecode\Mobile\Photos\Photos;

app(Photos::class)->save('https://cdn.example.com/photo.jpg');
app(Photos::class)->save('https://cdn.example.com/clip.mp4', 'video');
```

### From JavaScript / TypeScript

[](#from-javascript--typescript)

```
import { BridgeCall } from '@nativephp/mobile';

const result = await BridgeCall('Photos.Save', {
    url: 'https://cdn.example.com/photo.jpg',
    // type is optional — inferred from the URL extension when omitted.
    type: 'image',
});

if (result?.status === 'saved') {
    // saved to camera roll / gallery
}
```

The call returns synchronously once the asset has been written. On failure the response carries a `code` and `message` (`PERMISSION_DENIED`, `EXECUTION_FAILED`, `INVALID_PARAMETERS`).

License
-------

[](#license)

MIT

###  Health Score

37

—

LowBetter than 81% of packages

Maintenance86

Actively maintained with recent releases

Popularity3

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity46

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Unknown

Total

1

Last Release

71d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/cd90b62171fc6768affb56df3195dea392aa5ea886082a6b0d1a8478f05d091e?d=identicon)[voicecode](/maintainers/voicecode)

---

Top Contributors

[![voicecode-bv](https://avatars.githubusercontent.com/u/4598259?v=4)](https://github.com/voicecode-bv "voicecode-bv (2 commits)")

---

Tags

mobilephotosgallerynativephpcamera-roll

### Embed Badge

![Health badge](/badges/voicecode-bv-mobile-photos/health.svg)

```
[![Health](https://phpackages.com/badges/voicecode-bv-mobile-photos/health.svg)](https://phpackages.com/packages/voicecode-bv-mobile-photos)
```

###  Alternatives

[nativephp/mobile-starter

The skeleton application for NativePHP for Mobile.

202.5k](/packages/nativephp-mobile-starter)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
