Purpose
The only extension point for the publish payload. Fired by mam_main_app_publishing just before the publish-request POST to WPMAM. Sibling plugins use this to inject build-time config (third-party SDK keys, custom Info.plist entries, gradle properties, custom URL schemes).
Signature
$settings = apply_filters( 'mam_fastlane_settings', array $settings );
| Parameter | Type | Description |
|---|---|---|
$settings |
array | The Fastlane settings array built from the persisted publish-app options |
Returns: array — the augmented settings.
Example: inject a third-party SDK key into iOS Info.plist
add_filter( 'mam_fastlane_settings', function ( array $settings ): array {
$sdk_key = get_option( 'my_plugin_sdk_key' );
if ( $sdk_key ) {
$settings['ios_extra_plist'] = $settings['ios_extra_plist'] ?? array();
$settings['ios_extra_plist']['MyPluginSDKKey'] = $sdk_key;
}
return $settings;
} );
Example: register a custom URL scheme
add_filter( 'mam_fastlane_settings', function ( array $settings ): array {
$settings['custom_url_schemes'] = $settings['custom_url_schemes'] ?? array();
$settings['custom_url_schemes'][] = 'myplugin-callback';
return $settings;
} );
What WPMAM does with the payload
The payload is POSTed to the WPMAM publish endpoint, which feeds it into Fastlane on WPMAM’s CI. Specific keys WPMAM understands (Info.plist entries, AndroidManifest entries, gradle properties, custom URL schemes, build settings) are documented on the WPMAM side. Coordinate with the build pipeline team before introducing new keys — adding a key that WPMAM doesn’t recognize is a no-op.
When this filter fires
Once per Submit Publish Request click. Fire-and-forget — the build runs async on WPMAM’s CI; status is polled separately.
Gotchas
- Coordinate new keys with WPMAM. Adding a key here without server-side support is a no-op.
- Don’t override the persisted publish-app options here. Edit them in Mobile App Manager → Publish Your App and let the page rebuild the payload. This filter is for additive injection.
- Frozen contract. This is the only extension point for the publish payload. Don’t try to intercept the HTTP POST or modify options post-save.
- Fires on every publish. A subscriber that pulls a value from a slow source (HTTP, expensive DB) blocks the submit.
$settings['ios_extra_plist']may not exist until your subscriber adds it. Always?? array().
Related articles
- Recipe: Publish your app to iOS and Android
- Integration: WPMAM publishing pipeline
- Frozen public contracts reference
Metadata
| Field | Value |
|---|---|
| Article type | Hook Reference |
| Plugin slug | mam-main |
| Applies to plugin version | 2.1.11+ |
| Hook type | filter |
| Audience | PHP developer |
| Frozen contract | yes — the only publish-payload extension point |
| Last verified | 2026-05-02 |
