1. 程式人生 > >iAd框架詳細解析 —— ASM

iAd框架詳細解析 —— ASM

前言

iAd框架在應用的使用者介面的專用部分顯示廣告。 當用戶檢視或點選廣告時收到收入。接下來幾篇我們就一起看一下這個框架。感興趣的可以看下面幾篇文章。
1. iAd框架詳細解析(一) —— 基本概覽(一)

基本理解

1. 什麼是ASM

ASM是App Store Serach Marketing的簡稱,即蘋果應用商店搜尋競價廣告市場,蘋果搜尋廣告(Search Ads)。與ASO(App Store Optimization)相對應。ASO所指關鍵詞排名搜尋優化,而ASM則是指官方廣告競價優化

2016年6月,蘋果在WWDC大會上宣佈推出競價搜尋廣告業務,2016年9月29日推出了iOS Search Ads

,10月初這款業務在美國上線。蘋果官方資料顯示,超過65%的App下載量來自於App搜尋。

據瞭解,2017年 4月19日星期三正式新增覆蓋三個國家,分別是英國、澳大利亞和紐西蘭,現在ASM開始登陸國內市場。2018年6月,日本、韓國、德國、法國、義大利和西班牙的競價廣告投放。

2. 廣告展示地點

App Store

3. 影響廣告展示的主要因素

根據蘋果的官方文件說明,ASM競價搜尋廣告展示的關鍵因素有兩個,分別為相關性和投放價格。在投放過程中,蘋果採取相關性優先的原則。如果相關性不達標,即使出價高也不能投放;如果相關性達標,出價高的APP獲得廣告展示的機會。

4. 計費和展示

蘋果在iOS Search Ads

的收費方式是CPT(Cost Per Tap),即按照點選收費。此外,蘋果的競價按照預付費的方式進行,沒有最低消費門檻、預算門檻和時間門檻。其展現方式為淡藍色背景+Ads標識,這條廣告會在關鍵詞排名的第一位,具體展示方式還會分為有App截圖和無App截圖這兩種方式。

5. 展示次數

蘋果只有一個廣告位,如果有多個廣告主投放同一個關鍵詞,符合相關性之後,蘋果是輪流展示大家的APP。ASM投放過程中最在意的便是關鍵詞的展示量問題,原因很簡單,因為轉化的多少是直接由關鍵詞的展示量決定的,當展示量高的同時,不出意外的話,轉換勢必也是水漲船高。這是不可置疑的。

6. 我們需要做什麼?

1)研發方面

這個就需要我們工程師在專案中增加ASM相關的程式碼,就是用框架iAd,具體怎麼做,後面會詳細說明。

下面主要說一下非研發或者說運營上我們需要做什麼和注意什麼。

2)不超過總支出和每日支出限額

蘋果還沒有什麼很好的方式來確保競價廣告系列不會超出預算,但做為蘋果ASM競價投放師來說,你保持廣告系列預算的最佳狀態是確保廣告系列不會超出固有的預算。

從另一方面來說,在預算範圍內進行投放也是保持ASM競價最佳狀態的最簡單方法之一。

3)提高您最高CPT出價

如果你使用5美元的CPT出價,可你的競爭對手卻願意以10美元進CPT的出價,那麼你的競爭對手將會獲取更多的展示,而你的卻不會(假設TTR,相關性等同的情況下)。

所以,提高最高CPT出價是一個在ASM投放中很簡單的故障排除策略。這裡大家要注意的是,我們實際所支付的費用,通常低於您的最高CPT出價。

4)展開匹配型別

完全匹配是最嚴格的型別,其次是搜尋匹配,如果您正在按照完全匹配型別進行出價,那麼自然會獲得更多的展示次數。建議大家將搜尋匹配目標與您的關鍵字定位條件分開放置在單獨的廣告組/廣告系列中。

5)確保TTR儘可能高

關鍵字的TTR的最主要因素是最高每次點選費用的出價決定是否顯示搜尋印象。而提高TTR的一些常規方法有:

優化應用細節(截圖、應用圖示、評論、描述的前幾行)

使用完全匹配型別。

新增具有高展示次數和低TTR的搜尋字詞作為否定關鍵字(適用於搜尋匹配或廣泛匹配關鍵字)。

6)關鍵字

  • 將搜尋字詞新增為關鍵字
    • 只是因為您使用搜索匹配或廣泛匹配型別關鍵字匹配搜尋字詞,但並不意味著你能夠在搜尋引擎中獲取足夠的流量。其中通過新增搜尋字詞作為關鍵詞,可以有效的告之蘋果極其廣告投放引擎,你希望獲得與該關鍵字相關的流量,這種方法可以提高關鍵詞的展示率。
  • 確保您的關鍵字不被否定關鍵字阻止
    • 新增否定關鍵要保持投資回報率高的話,重要的是要提高TTR。大家要格外注意的是,否定關鍵字將預設認為廣泛匹配型別(如果沒有指定)。那麼,如果你的關鍵字是‘汽車遊戲’,並且將汽車新增為廣泛匹配,那麼便會阻止關鍵字的展示廣告。
  • 不要急著撤回所投放的關鍵字
    • 如果你的關鍵字展示量挺好,但突然轉化卻有問題時,不要立即撤回,ASM競價師可以做一個適當的調查,比如看我們的競爭對手是否保持了此關鍵字。另外可以對比關鍵詞的一週趨勢,如果連續幾天所呈現在的表現趨勢是不佳,那麼這時候我們果斷動手就可以了。
  • 選擇有競爭度的關鍵詞
    • 大家在選擇關鍵詞是,選擇競爭度高的關鍵詞,雖然出價的廣告主多,價格也會高。但是,帶來的點選量會很高。

ASM和ASO的主要區別

1. 定義

ASO是由英文“AppStoreOptimization”縮寫而來,意為“應用商店搜尋優化”。指的是APP在應用商店進行搜尋入口的數量及搜尋結果排名提升的過程,幫助開發者提升APP在應用商店的流量和下載轉化率,從而獲得更多的使用者。

ASM是由英文“App Store Search Marketing”縮寫而來,意為“蘋果應用商店搜尋競價廣告市場”。指的是蘋果官方廣告位競價。

2. 操作手段

ASO優化內容包括:榜單優化、搜尋優化

榜單優化

a. 刷榜:機刷/真機刷/積分牆都是ASO優化的方式之一,核心原理都是在於ID賬號進行指向性行為,從而影響曝光效應。一般通過一段時間內的大量下載來達到提升榜單排名的效果,從容獲得剛好的榜單展示位置。

b. 更換榜單類別:開發者上傳/更新應用時自主選擇榜單分類。選擇更為合適的分類,參考流量與競爭,可以有效天生榜單排名。

c. 付費轉免費:分為限時免費和長期免費兩種,前者更為常見。雖然沒有衝榜更為直接有效,但優化成本低,在一定程度上也對榜單優化有所幫助。

搜尋優化

a. 關鍵詞優化:關鍵詞覆蓋數是AppStore展示量的基礎,覆蓋越多,曝光的可能性越大。

b. 關鍵詞排名優化:搜尋下載量是影響關鍵詞排名最重要的因素,表示app被首次下載的次數。使用者活躍及評論也是影響關鍵詞排名的因素,但權重較低。

ASM 優化內容包括:關鍵詞優化、相關性優化

關鍵詞優化

ASM是關鍵詞優化師開啟一個模糊搜尋,覆蓋到同行業相關詞的搜尋,都會展示在裡面。也包括複數形式、錯字、相似字的糾正等。

相關性優化

不但要優化應用元素,也要優化搜尋後資料。包括:下載轉化、啟用轉化、使用時長、留存。

蘋果對於相關性的判斷是通過APP的元資料(應用提交時標題、關鍵詞、描述等)和使用者行為(搜尋之後的點選、轉化率、留存、活躍等)。

相關性是APP能否進行廣告投放的第一原則,如果相關性不達標,即便出再高的價格廣告都不會被投放;而在相關性達標的情況下,出價高的APP則能投放成功。

3. 展示

ASO優化後所得的排名第幾就是第幾,排位不變,展示次數固定。

ASM關鍵詞搜尋結果頁面最上方,有明顯的廣告標識。不同人看到的Ad不一樣,但是永遠在第一位,展示的次數也不同。

4. 安全性

ASO蘋果喜怒無常,千萬別違反相關法律法規。鋌而走險的CP選擇機刷方式來提升搜尋排名,一旦被蘋果發現或者遇到蘋果演算法調整,就會面臨清榜甚至APP下架風險。

ASM是蘋果親生的,當然不會遭遇下架風險。“正宮娘娘”無疑。

5. 計費

ASO計費

技術型的ASO是免費的,而且帶來的流量是自然流量,但背後花費的大量努力和時間卻是實實在在的成本。但積分牆和機刷就需要一定成本,跟市場預期和預算相關。(當然是付給渠道商,人家也得吃飯吶)。

ASM計費

通過開發者設定的CPT按點選收費設定的價格和第二位出價競價原則來判斷。(當然可以通過優化相關性來降低出價成本,但不管怎麼樣,錢都是給蘋果爸爸的)。

歸因流程

下面我們就看一下使用ASM歸因的流程,主要就是如下圖所示:

如果你使用AppsFlyer這個SDK,你就更會深刻的理解移動歸因和廣告運營方面的原理了。不過不管你用的是什麼SDK,資料都要來源於蘋果。這個ASM是蘋果親生的,所以不會有整合三方的亂七八糟的問題。

開發

下面我們就看一下如果使用ASM需要我們開發做什麼或者說增加修改什麼邏輯。

  • 1) 將 iAd framework 新增到 Xcode 項⽬目⽂檔案。

在實現歸因邏輯的程式⽂檔案中引⽤用 iAd headers:

#import<iAd/iAd.h>
  • 2) 請求 Search Ads 歸因,將歸因結果使⽤用在你的業務中
// Check for iOS 10 attribution implementation
if ([[ADClient sharedClient]
respondsToSelector:@selector(requestAttributionDetailsWithBlock:)]) {
    NSLog(@"iOS 10 call exists");
    [[ADClient sharedClient]
requestAttributionDetailsWithBlock:^(NSDictionary *attributionDetails,
NSError *error) {
        // Look inside of the returned dictionary for all attribution
details
        NSLog(@"Attribution Dictionary: %@", attributionDetails);
    }];
}
  • 3) 返回資料處理

下面我們就看一下返回的資料處理。

// 定義錯誤程式碼
typedef NS_ENUM(NSInteger, ADClientError) {
    ADClientErrorUnknown = 0,
    ADClientErrorLimitAdTracking = 1,
};
// 調⽤用歸因API
[[ADClient sharedClient] requestAttributionDetailsWithBlock: ^(NSDictionary *attributionDetails, NSError *error) {
if(!error) {
// 歸因成功;資料不不再變化,可記錄狀態,該裝置不不再調⽤用此API。
// 建議將attributionDetails資料原樣傳送到您的伺服器器儲存,在服務端做解析 return;
    }
    if(error.code == ADClientErrorLimitAdTracking) {
// 歸因錯誤;資料不不再變化,可記錄狀態,該裝置不不再調⽤用此API。 // 裝置啟⽤用了了【限制⼴廣告跟蹤】。不不能獲取到歸因詳情。
return;
}
// 任何其他歸因錯誤,您需要在合適時機再次調⽤用本接⼝口。
// 可以是在本次會話,或者APP下次被啟動時。 }];

下面我們就主要看一下對返回的資料的處理。

1. 成功的處理

以下三種情況,說明當前⽤使用者已成功被歸因,資料不不會再變化,⽆無需再調⽤用接⼝口。

  • 來⾃非Search Ads(自然安裝、其他推⼴廣渠道)
{
  "Version3.1": {
    "iad-attribution": "false"
  }
}
  • 來⾃Search Ads
{
  "Version3.1": {
    "iad-attribution": "true",
    "iad-org-name": "Tinder-201711",
    "iad-campaign-id": "3138493",
    "iad-campaign-name": "Tinder",
    "iad-purchase-date": "2016-11-30T01:17:41Z",
    "iad-conversion-date": "2016-11-30T01:17:41Z",
    "iad-conversion-type": "Download",
    "iad-click-date": "2016-11-30T01:17:35Z",
    "iad-adgroup-id": "3138519",
    "iad-adgroup-name": "Tinder",
    "iad-keyword": "dating app",
    "iad-creative-id": "1234567890",
    "iad-creative-name": "CreativeName",
    "iad-lineitem-id": "3138519", //iad-adgroup-id
    "iad-lineitem-name": "Tinder" //iad-adgroup-name
} }
  • 測試資料
{
  "Version3.1": {
    "iad-attribution": "true",
    "iad-org-name": "OrgName",
    "iad-campaign-id": "1234567890",
    "iad-campaign-name": "CampaignName",
    "iad-purchase-date": "2016-11-30T01:17:41Z",
    "iad-conversion-date": "2017-12-09T02:14:41Z",
    "iad-conversion-type": "Download",
    "iad-click-date": "2017-12-09T02:14:41Z",
    "iad-adgroup-id": "1234567890",
    "iad-adgroup-name": "AdGroupName",
    "iad-keyword": "Keyword",
    "iad-creative-id": "1234567890",
    "iad-creative-name": "CreativeName",
    "iad-lineitem-id": "1234567890",
    "iad-lineitem-name": "LineName",
  }

下面看一下返回欄位說明

2. 錯誤的處理

  • ADClientErrorUnknown

應在合適時間再次調⽤用接⼝,由於Search Ads後臺資料統計延時。

code = 0
description = "Unable to retrieve attribution details"
  • ADClientErrorLimitAdTracking

無需再調⽤用接⼝,由於⽤使用者在裝置上中啟⽤了【限制⼴廣告跟蹤】(設定-隱私-⼴廣告),⽆無法獲得歸因資料。

code = 1
description = "Limit Ad Tracking is enabled for this device"   

下面看一下這幾年返回資料的演變

 
//201611
{
  "Version3.1": {
    "iad-attribution": true,
    "iad-org-name": "Light Right",
    "iad-campaign-id": 15292426,
    "iad-campaign-name": "Light Bright Launch",
    "iad-conversion-date": "2016-06-14T17:18:07Z",
    "iad-click-date": "2016-06-14T17:17:00Z",
    "iad-adgroup-id": 15307675,
    "iad-adgroup-name": "LightRight Launch Group",
    "iad-keyword": "light right",
    }
 }

//201708
{
  "Version3.1": {
    "iad-attribution": true,
    "iad-org-name": "Light Right",
    "iad-campaign-id": 15292426,
    "iad-campaign-name": "Light Bright Launch",
    "iad-purchase-date": "2016-10-14T17:18:07Z",  //NEW
    "iad-conversion-date": "2016-10-14T17:18:07Z",
    "iad-conversion-type": "Download",  //NEW
    "iad-click-date": "2016-10-14T17:17:00Z",
    "iad-adgroup-id": 15307675,
    "iad-adgroup-name": "LightRight Launch Group",
    "iad-keyword": "light right",
    "iad-keyword-matchtype": "Broad"  //NEW
    }
 }

//201805
{
  "Version3.1": {
    "iad-attribution": true,
    "iad-org-name": "Light Right",
    "iad-campaign-id": 15292426,
    "iad-campaign-name": "Light Bright Launch",
    "iad-purchase-date": "2016-10-14T17:18:07Z",
    "iad-conversion-date": "2016-10-14T17:18:07Z",
    "iad-conversion-type": "Download",
    "iad-click-date": "2016-10-14T17:17:00Z",
    "iad-adgroup-id": 15307675,
    "iad-adgroup-name": "LightRight Launch Group",
    "iad-keyword": "light right",
    "iad-keyword-matchtype": "Broad",
    "iad-creative-id": "456093",  //NEW
    "iad-creative-name": "Nature Images"  //NEW
    } 
} 

參考文章