使用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
相关产品推荐
相关产品推荐

