You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用facebook-business-php 17.0.1创建OUTCOME_APP_PROMOTION广告报错求助

问题解答

关于OUTCOME_APP_PROMOTION目标与asset_feed_spec的兼容性

OUTCOME_APP_PROMOTION属于Facebook推出的新推广目标,目前暂不支持asset_feed_spec这种动态创意配置方式。该目标仅兼容基于object_story_spec或直接指定素材字段的创意配置方案,asset_feed_spec仅适配部分传统推广目标(如APP_INSTALLS等旧版目标)。

facebook-business-php 17.0.1 适配OUTCOME_APP_PROMOTION目标的完整示例

以下是从Campaign到Ad的完整创建代码,采用支持该目标的创意配置方式:

1. 初始化SDK

use FacebookAds\Api;
use FacebookAds\Logger\CurlLogger;

$access_token = 'YOUR_ACCESS_TOKEN';
$app_id = 'YOUR_APP_ID';
$app_secret = 'YOUR_APP_SECRET';
$account_id = 'act_YOUR_AD_ACCOUNT_ID';

Api::init($app_id, $app_secret, $access_token);
Api::instance()->setLogger(new CurlLogger());

2. 创建Campaign

use FacebookAds\Object\Campaign;
use FacebookAds\Object\Fields\CampaignFields;
use FacebookAds\Object\Values\CampaignObjectiveValues;
use FacebookAds\Object\Values\CampaignStatusValues;

$campaign = new Campaign(null, $account_id);
$campaign->setData([
    CampaignFields::NAME => 'APP推广测试Campaign',
    CampaignFields::OBJECTIVE => CampaignObjectiveValues::OUTCOME_APP_PROMOTION,
    CampaignFields::STATUS => CampaignStatusValues::PAUSED,
    CampaignFields::SPECIAL_AD_CATEGORIES => [], // 根据实际情况设置
]);
$campaign->create();

$campaign_id = $campaign->{CampaignFields::ID};

3. 创建Adset

use FacebookAds\Object\AdSet;
use FacebookAds\Object\Fields\AdSetFields;
use FacebookAds\Object\Values\AdSetStatusValues;
use FacebookAds\Object\Targeting;
use FacebookAds\Object\Fields\TargetingFields;

$adset = new AdSet(null, $account_id);
$adset->setData([
    AdSetFields::NAME => 'APP推广测试Adset',
    AdSetFields::CAMPAIGN_ID => $campaign_id,
    AdSetFields::STATUS => AdSetStatusValues::PAUSED,
    AdSetFields::DAILY_BUDGET => 1000, // 单位:分,即10美元
    AdSetFields::BID_STRATEGY => 'LOWEST_COST_WITHOUT_CAP',
    AdSetFields::OPTIMIZATION_GOAL => 'APP_INSTALLS', // 该目标下的优化目标
    AdSetFields::TARGETING => (new Targeting())->setData([
        TargetingFields::GEO_LOCATIONS => [
            'countries' => ['US'],
        ],
        TargetingFields::AGE_RANGES => [
            ['min' => 18, 'max' => 65],
        ],
    ]),
]);
$adset->create();

$adset_id = $adset->{AdSetFields::ID};

4. 创建Creative(兼容OUTCOME_APP_PROMOTION的方式)

use FacebookAds\Object\AdCreative;
use FacebookAds\Object\Fields\AdCreativeFields;
use FacebookAds\Object\AdCreativeLinkData;
use FacebookAds\Object\Fields\AdCreativeLinkDataFields;
use FacebookAds\Object\AdCreativeObjectStorySpec;
use FacebookAds\Object\Fields\AdCreativeObjectStorySpecFields;

$link_data = new AdCreativeLinkData();
$link_data->setData([
    AdCreativeLinkDataFields::MESSAGE => '快来下载我们的APP!',
    AdCreativeLinkDataFields::LINK => 'https://your-app-download-link.com',
    AdCreativeLinkDataFields::IMAGE_HASH => 'YOUR_IMAGE_HASH', // 预先上传到FB的图片哈希值
    AdCreativeLinkDataFields::CALL_TO_ACTION => [
        'type' => 'INSTALL_APP',
        'value' => [
            'link' => 'https://your-app-download-link.com',
            'app_id' => 'YOUR_APP_ID',
        ],
    ],
]);

$object_story_spec = new AdCreativeObjectStorySpec();
$object_story_spec->setData([
    AdCreativeObjectStorySpecFields::PAGE_ID => 'YOUR_PAGE_ID',
    AdCreativeObjectStorySpecFields::LINK_DATA => $link_data,
]);

$creative = new AdCreative(null, $account_id);
$creative->setData([
    AdCreativeFields::NAME => 'APP推广测试Creative',
    AdCreativeFields::OBJECT_STORY_SPEC => $object_story_spec,
]);
$creative->create();

$creative_id = $creative->{AdCreativeFields::ID};

5. 创建Ad

use FacebookAds\Object\Ad;
use FacebookAds\Object\Fields\AdFields;
use FacebookAds\Object\Values\AdStatusValues;

$ad = new Ad(null, $account_id);
$ad->setData([
    AdFields::NAME => 'APP推广测试Ad',
    AdFields::ADSET_ID => $adset_id,
    AdFields::CREATIVE => [
        'creative_id' => $creative_id,
    ],
    AdFields::STATUS => AdStatusValues::PAUSED,
]);
$ad->create();

echo "创建成功的Ad ID: " . $ad->{AdFields::ID};

注意事项

  • 确保所有参数(如图片哈希、页面ID、APP ID等)替换为你自己的真实数据
  • OUTCOME_APP_PROMOTION目标下,优化目标需选择与应用推广相关的选项(如APP_INSTALLS)
  • 若需动态创意效果,可尝试使用Facebook的**Dynamic Creative Optimization (DCO)**功能,通过在Adset中设置dynamic_creative_spec来实现,而非asset_feed_spec

内容的提问来源于stack exchange,提问作者jianfei ouyang

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 11:37:35