當前位置:首頁 » 編程軟體 » ios自動編譯腳本

ios自動編譯腳本

發布時間: 2022-08-07 01:44:55

① iOS開發有沒有辦法做到自動化編譯

完全可以,有在論壇上看到過批量打包的腳本

② ios下 怎麼在代碼中調用ffmpeg的命令

ffmpeg是一個多平台多媒體處理工具,處理視頻和音頻的功能非常強大。目前在網上搜到的iOS上使用FFMPEG的資料都比較陳舊,而FFMPEG更新迭代比較快; 且網上的講解不夠詳細,對於初次接觸FFMPEG的新手(例如我)來說確實不太好使用。為了防止忘記,這里對iOS下使用FFMPEG做一個總結。

1. FFMPEG層次結構的簡單理解
要使用FFMPEG,首先需要理解FFMPEG的代碼結構。根據志哥的提示,ffmpeg的代碼是包括兩部分的,一部分是library,一部分是tool。api都是在library裡面,如果直接調api來操作視頻的話,就需要寫c或者c++了。另一部分是tool,使用的是命令行,則不需要自己去編碼來實現視頻操作的流程。實際上tool只不過把命令行轉換為api的操作而已。

2. 預熱-在mac os下使用ffmpeg
在mac os下使用ffmpeg比較簡單,可以直接使用命令行來操作。首先安裝ffmpeg,這里默認系統已經安裝好brew,只需要在終端上輸入:
brew install ffmpeg
等待安裝結束即可。
安裝結束後,嘗試以下命令:
ffmpeg -i input.mp4 output.avi
如果能順利轉換,表明安裝成功

3. 編譯能在iOS下使用的FFMPEG library庫
這一步是編譯1所說的library,編譯好之後可以調用FFMPEG的api。網上有一些方法,但都要自己手動編譯,稍顯復雜而且比較陳舊。按照app store的需求,編譯出來的包還必須支持arm64。我在萬能的github中找到一個能夠"一鍵編譯"的腳本,地址如下:
https://github.com/kewlbear/FFmpeg-iOS-build-script
而且寫這個腳本的歪果仁挺好人,更新很及時,已經更新到了最新的2.5.3版本。下載下來,只有一個build-ffmpeg.sh腳本文件。在終端中轉至腳本的目錄,執行命令:
./build-ffmpeg.sh
腳本則會自動從github中把ffmpeg源碼下到本地並開始編譯。
編譯結束後,文件目錄如下:

其中,ffmpeg-2.5.3是源碼,FFmpeg-iOS是編譯出來的庫,裡面有我們需要的.a靜態庫,一共有7個。
執行命令:
lipo -info libavcodec.a
查看.a包支持的架構,這幾個包都支持了armv7 armv7s i386 x86_64 arm64這幾個架構,這個腳本果真是業界良心啊~~~

4.在xcode中引入FFMPEG library庫
新建工程,把上面編譯好的FFmpeg-iOS拖到xcode工程中,添加一個頭文件引用

#include "avformat.h"
添加一個api語句:

av_register_all();
添加一個空的類,把執行文件.m後綴改為.mm,開啟混編模式。
添加相應的framework,包括avfoundation和coremedia。
運行工程,如果沒有報錯,則表明編譯成功。

5.在xcode項目中使用命令行
執行到第4步,已經可以使用library庫了。但是如果要對視頻進行操作,還是需要手動寫很多代碼去調用api,工作量較大,自然不如直接寫命令行方便。為了命令行能夠在xcode工程中使用,還需要做以下工作:
(1)添加源碼中的tools,具體文件包括:


(2)添加Header Search Paths
在target--build setting中搜索Header Search Paths,並在Header Search Paths下面添加源碼ffmpeg-2.5.3和scratch的路徑。
(3)修改ffmpeg.h和ffmpeg.c源碼

如果此時run這個工程,則會報錯,原因是工程裡面有2個main函數,此時處理方法為:
在ffmpeg.h中添加一個函數聲明:
int ffmpeg_main(int argc, char **argv);
在ffmpeg.c中找到main函數,把main函數改為ffmpeg_main。
(4)調用命令行範例
添加頭文件:#import "ffmpeg.h"
調用命令行
int numberOfArgs = 16;
char** arguments = calloc(numberOfArgs, sizeof(char*));

arguments[0] = "ffmpeg";
arguments[1] = "-i";
arguments[2] = inputPath;
arguments[3] = "-ss";
arguments[4] = "0";
arguments[5] = "-t";
arguments[6] = rationChar;
arguments[7] = "-vcodec";
arguments[8] = "";
arguments[9] = "-acodec";
arguments[10] = "aac";
arguments[11] = "-strict";
arguments[12] = "-2";
arguments[13] = "-b:a";
arguments[14] = "32k";
arguments[15] = outputPath;

int result = ffmpeg_main(numberOfArgs, arguments);
其中inputpath和outputpath是文件路徑。經測試,這兩個路徑不支持asset-library://協議和file:// 協議,所以如果是要用相冊的文件,我目前的解決辦法是把它拷貝到沙盒裡面。

6. 改關閉進程為關閉線程
如果順利進行到了第5步,在app中是能夠用命令行處理視頻了,但會出現一個問題,app會退出。經肖大神提醒,發現了命令行執行完畢之後會退出進程。而iOS下只能啟動一個進程,因此必須改關閉進程為關閉線程,或者直接把關閉進程的方法給注掉。

在ffmpeg.c中可以看到,執行退出進程的方法是exit_program,定位到了cmtils.c中執行了c語言的exit方法。這里我將它改為了pthread_exit(需要添加#include 頭文件)。在xcode項目中使用時,則可以用NSThread來新開一個線程,執行完畢之後,把線程關閉了即可。再使用NSThreadWillExitNotification通知,即可監聽線程退出的情況。

7. 修復ffmpeg.c裡面的一個bug
在實際項目中,可能需要多次調用命令行,但在多次調用命令行的過程中,發現ffmpeg.c的代碼中會訪問空屬性導致程序崩潰。逐步debug後發現,很多指針已經置空了,但它們的計數卻沒有置零,不知道是不是ffmpeg.c的一個bug。修復方法如下:在ffmpeg_cleanup方法下,將各個計數器置零,包括:
nb_filtergraphs
nb_output_files
nb_output_streams
nb_input_files
nb_input_streams
置零之後,重復使用ffmpeg_main方法一切正常。

③ 如何在iOS下編譯librtmp

編譯librtmp需要先編譯openssl,因為librtmp依賴openssl

首先編譯openssl:

把以下內容保存為shell腳本:

#!/bin/sh

VERSION="1.0.1h" #指明openssl的版本信息,比如下載的是openssl-1.0.1h.tar.gz那麼對於就填寫1.0.1h
SDKVERSION="7.1" #指明ios sdk的版本號,目前最新的是7.1,不清楚的同學可以 ls /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS7.1.sdk/ 一下看看自己的iPhoneOS7.1.sdk是不是7.1

CURRENTPATH=`pwd`
ARCHS="i386 armv7 armv7s arm64"
BUILDPATH="${CURRENTPATH}/build"
LIBPATH="${CURRENTPATH}/lib"
INCLUDEPATH="${CURRENTPATH}/include"
SRCPATH="${CURRENTPATH}/src"
LIBSSL="libssl.a"
LIBCRYPTO="libcrypto.a"
DEVELOPER=`xcode-select -print-path`

if [ ! -d "$DEVELOPER" ]; then
echo "xcode path is not set correctly $DEVELOPER does not exist (most likely because of xcode > 4.3)"
echo "run"
echo "sudo xcode-select -switch <xcode path>"
echo "for default installation:"
echo "sudo xcode-select -switch /Applications/Xcode.app/Contents/Developer"
exit 1
fi

set -e
if [ ! -e openssl-${VERSION}.tar.gz ]; then
echo "Downloading openssl-${VERSION}.tar.gz"
curl -O http://www.openssl.org/source/openssl-${VERSION}.tar.gz
else
echo "Using openssl-${VERSION}.tar.gz"

# Remove the source directory if already exist
rm -rf "${SRCPATH}/openssl-${VERSION}"
fi

mkdir -p "${SRCPATH}"
mkdir -p "${BUILDPATH}"
mkdir -p "${LIBPATH}"
mkdir -p "${INCLUDEPATH}"

tar zxf openssl-${VERSION}.tar.gz -C "${SRCPATH}"
cd "${SRCPATH}/openssl-${VERSION}"

LIBSSL_REPO=""
LIBCRYPTO_REPO=""

for ARCH in ${ARCHS}
do
if [ "${ARCH}" == "i386" ];
then
PLATFORM="iPhoneSimulator"
else
sed -ie "s!static volatile sig_atomic_t intr_signal;!static volatile intr_signal;!" "crypto/ui/ui_openssl.c"
PLATFORM="iPhoneOS"
fi
export CROSS_TOP="${DEVELOPER}/Platforms/${PLATFORM}.platform/Developer"
export CROSS_SDK="${PLATFORM}${SDKVERSION}.sdk"
export BUILD_TOOLS="${DEVELOPER}"

echo "Building openssl-${VERSION} for ${PLATFORM} ${SDKVERSION} ${ARCH}"
echo "Please stand by..."

export CC="${BUILD_TOOLS}/usr/bin/gcc -arch ${ARCH}"

OUTPATH="${BUILDPATH}/openssl-${PLATFORM}${SDKVERSION}-${ARCH}.sdk"
mkdir -p "${OUTPATH}"
LOG="${OUTPATH}/build-openssl-${VERSION}.log"

if [[ "$VERSION" =~ 1.0.0. ]]; then
./Configure BSD-generic32 --openssldir="${OUTPATH}" > "${LOG}" 2>&1
else
./Configure iphoneos-cross --openssldir="${OUTPATH}" > "${LOG}" 2>&1
fi

# add -isysroot to CC=
sed -ie "s!^CFLAG=!CFLAG=-isysroot ${CROSS_TOP}/Platforms/${PLATFORM}.platform/Developer/SDKs/${CROSS_SDK} -miphoneos-version-min=7.0 !" "Makefile"

make >> "${LOG}" 2>&1
make install >> "${LOG}" 2>&1
make clean >> "${LOG}" 2>&1

LIBSSL_REPO+="${OUTPATH}/lib/${LIBSSL} "
LIBCRYPTO_REPO+="${OUTPATH}/lib/${LIBCRYPTO} "
done

echo "Build library..."
lipo -create ${LIBSSL_REPO}-output ${LIBPATH}/${LIBSSL}
lipo -create ${LIBCRYPTO_REPO}-output ${LIBPATH}/${LIBCRYPTO}

cp -R ${BUILDPATH}/openssl-iPhoneSimulator${SDKVERSION}-i386.sdk/include/openssl ${INCLUDEPATH}/
echo "Building done."
echo "Cleaning up..."
rm -rf ${SRCPATH}/openssl-${VERSION}
echo "Done."

保存腳本,添加腳本的執行許可權(chmod +x 腳本名稱)

運行腳本
可以編譯成功的,如果失敗,可以以打開那個log文件,查看失敗原因。

編譯成功以後,把lib文件和include拷貝到你的librtmp目錄(可以新建一個空得librtmp目錄),在librtmp目錄裡面同樣寫一個shell腳本,腳本如下:

#!/bin/sh

SDKVERSION="7.1" #這里跟openssl的地方是一個意思

CURRENTPATH=`pwd`
ARCHS="i386 armv7 armv7s arm64"

LIBPATH="${CURRENTPATH}/lib" #這里就是剛才拷貝過來的目錄,不要修改,因為librtmp最後生成的也放到了這個下面
INCLUDEPATH="${CURRENTPATH}/include" #這里就是剛才拷貝過來的目錄,不要修改,因為librtmp最後生成的也放到了這個下面

LIBRTMPREPO="git://git.ffmpeg.org/rtmpmp"
BUILDPATH="${CURRENTPATH}/build"
SRCPATH="${CURRENTPATH}/src"
LIBRTMP="librtmp.a"
DEVELOPER=`xcode-select -print-path`

if [ ! -d "$DEVELOPER" ]; then
echo "xcode path is not set correctly $DEVELOPER does not exist (most likely because of xcode > 4.3)"
echo "run"
echo "sudo xcode-select -switch <xcode path>"
echo "for default installation:"
echo "sudo xcode-select -switch /Applications/Xcode.app/Contents/Developer"
exit 1
fi

# Check whether openssl has already installed on the machine or not.
# libcrypt.a / libssl.a

set -e
echo 'Check openssl installation'
if [ -f "${LIBPATH}/libcrypto.a" ] && [ -f "${LIBPATH}/libssl.a" ] && [ -d "${INCLUDEPATH}/openssl" ]; then
echo 'Openssl for iOS has already installed, no need to install openssl'
else
echo 'Openssl for iOS not found, will install openssl for iOS'
./build-libssl.sh
echo 'Succeeded to install openssl'
fi

# Download librtmp source code from git repository
# We assuem the user already installed git client.
echo 'Clone librtmp git repository'

# Remove the directory if already exist
rm -rf "${SRCPATH}/rtmpmp"

git clone ${LIBRTMPREPO} src/rtmpmp
cd "${SRCPATH}/rtmpmp/librtmp"

LIBRTMP_REPO=""

for ARCH in ${ARCHS}
do
if [ "${ARCH}" == "i386" ];
then
PLATFORM="iPhoneSimulator"
else
PLATFORM="iPhoneOS"
fi
export CROSS_TOP="${DEVELOPER}/Platforms/${PLATFORM}.platform/Developer"
export CROSS_SDK="${PLATFORM}${SDKVERSION}.sdk"
export BUILD_TOOLS="${DEVELOPER}"

echo "Building librtmp for ${PLATFORM} ${SDKVERSION} ${ARCH}"
echo "Please wait..."

# add arch to CC=
sed -ie "s!AR=\$(CROSS_COMPILE)ar!AR=/usr/bin/ar!" "Makefile"
sed -ie "/CC=\$(CROSS_COMPILE)gcc/d" "Makefile"
echo "CC=\$(CROSS_COMPILE)gcc -arch ${ARCH}" >> "Makefile"

export CROSS_COMPILE="${DEVELOPER}/usr/bin/"
export XCFLAGS="-isysroot ${CROSS_TOP}/SDKs/${CROSS_SDK} -miphoneos-version-min=7.0 -I${INCLUDEPATH} -arch ${ARCH}"

if [ "${ARCH}" == "i386" ];
then
export XLDFLAGS="-L${LIBPATH} -arch ${ARCH}"
else
export XLDFLAGS="-isysroot ${CROSS_TOP}/SDKs/${CROSS_SDK} -miphoneos-version-min=7.0 -L${LIBPATH} -arch ${ARCH}"
fi
OUTPATH="${BUILDPATH}/librtmp-${PLATFORM}${SDKVERSION}-${ARCH}.sdk"
mkdir -p "${OUTPATH}"
LOG="${OUTPATH}/build-librtmp.log"

make SYS=darwin >> "${LOG}" 2>&1
make SYS=darwin prefix="${OUTPATH}" install >> "${LOG}" 2>&1
make clean >> "${LOG}" 2>&1

LIBRTMP_REPO+="${OUTPATH}/lib/${LIBRTMP} "
done

echo "Build universal library..."
lipo -create ${LIBRTMP_REPO}-output ${LIBPATH}/${LIBRTMP}

mkdir -p ${INCLUDEPATH}
cp -R ${BUILDPATH}/librtmp-iPhoneSimulator${SDKVERSION}-i386.sdk/include/ ${INCLUDEPATH}/

echo "Building done."
echo "Cleaning up..."

rm -rf ${SRCPATH}/rtmpmp
echo "Done."

保存腳本

運行腳本

④ 如何使用xcodebuild在命令行編譯iOS工程

、准備工作 1、jenkins環境。搭建jenkins環境可以參考jenkins平台搭建和配置一節。需要注意的是,雖然涉及iOS開發,但是jenkins平台卻不必搭建在mac機器上,只要在jenkins上添加mac節點就可以了。 2、iOS開發環境。iOS開發環境主要是指Xcode開發環境,Xcode是免費的,只要在蘋果應用商店裡下載一個就可以了。當然,還有重要的一點兒---開發者證書,現在個人也已經有免費的證書了,沒有證書的話,只能打模擬器用的包了。 3、git項目。強烈建議把代碼放在git上,這樣便於團隊開發。當然,不放git上也可以。 4、jenkins Xcode持續集成插件。常用的插件Xcode integration,這個插件能夠快速的幫助我們進行Xcode打包配置,當然,只用純shell腳本也是可以的。 在jenkins上打包之前,我們最好手工測試一下可以打包成功,首先用Xcode圖形界面進行測試,然後用命令行測試,如果都能打包成功就可以掛在jenkins上運行了,畢竟jenkins的原理也是通過執行一系列命令來完成的。 三、jenkins配置 1、創建一個任務,創建任務的時候最好選自由風格的軟體項目,這樣配置起來比較方便,如果有需要,也可以選擇其他的風格。 2、描述

⑤ ios 怎麼配置編譯ffmpeg

IOS上編譯ffmpeg需要先下載兩個程序:iFrameExractor和ffmpeg
編譯步驟:
1、在終端下: cd /iFrameExtractor/ffmpeg 建議開始就執行 sudo -s (獲取許可權命令)
2、在終端下輸入 ./configure --prefix=/iFrameExtractor/ffmpeg --libdir=iFrameExtractor/ffmpeg/lib --enable-gpl --enable-static --disable-shared --enable-swscale --enable-zlib --enable-bzlib --disable-ffmpeg --disable-ffplay --disable-ffserver --enable-pthreads
3、執行make 這里會有一堆的編譯情況。
註:最好先升級Command Line Tools,避免編譯錯誤

4、執行make install。 (執行完後 到iFrameExtractor/ffmpeg/lib文件上去看看)
出現 libavcodec libavdevice libavformat libavutil libswscale5個.a文件
5、用xcode 打開iFrameExractor工程,確認Header Search Paths里有:"$(SRCROOT)/ffmpeg"路徑。 $(SRCROOT)表示工程路徑。同時可以看到iFrameExractor工程下ffmpeg文件下的.a文件都不是紅色的了。

6、真機上編譯(模擬器上i386,真機上是arm的,真機還分arm6 和arm7 )
以下是針對arm7的

/configure --disable-doc --disable-ffmpeg --disable-ffplay --disable-ffserver --enable-cross-compile --arch=arm --target-os=darwin --cc=/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc --as='gas-preprocessor/gas-preprocessor.pl /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc' -- sysroot=/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.0.sdk --cpu=cortex-a8 --extra-cflags='-arch armv7' --extra-ldflags='-arch armv7 -isysroot /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.0.sdk' --enable-pic
7、執行 make 和make install 就有上面的幾個.a文件,至此編譯結束。

⑥ 使用appium怎樣寫ios真機自動化測試腳本

同android一樣 可以用python腳本去寫腳本

⑦ ios自動化腳本工具控制項識別使用的什麼框架

用TC簡單程序開發工具,這個是一款支持中英文編程的腳本開發工具,網路搜索下載。

⑧ 如何用python寫ios的游戲腳本

可以的,如下方案二選一
1、需要Mac, ,使用xcode部署 iOS-Tagent 成功後, 之後airtest完成自動操作
2、需要ipad,因為ipad支持藍牙滑鼠,購買藍牙滑鼠模塊,用python控制串口控制藍牙滑鼠模塊,再通過藍牙滑鼠模塊操控ipad,即可實現python操作ipad

⑨ ios 能編譯動態庫嗎

一、創建FrameWork工程

新建工程,選擇創建FrameWork工程或者靜態庫(Static Library)。






  • ⑩ ios自動化編譯 能用於appstore嗎

    基本上,每個iOS開發者都希望自己的作品,也能像小鳥一樣一飛沖天,而且在排行榜里,還經常可看到國人作品的影子,但現在 App Store接近四十萬個應用裡面,別說成為小鳥,就算進入排行榜也是非常困難的事情。那麼,怎樣才能沖入排行榜呢?
    挖掘排行榜的規則
    首先,當然是要經常關注這個直白又神秘的排行榜,說它直白,是因為人人都看得見,說它神秘卻是因為背後排行的規則除了蘋果公司自己,無人能知。排行 榜在iOS設備或者電腦上的iTunes上都能看到:每個國家都有自己排行榜,榜單分為三個,每個榜單現在提供200個產品列表。
    這三個排行榜分別是付費應用軟體排行(top paid)、免費應用軟體排行(top free)以及暢銷應用排行(top grossing),頭兩個是在App Store開張時即存在的,第三個卻在差不多一年後才加上。我們可以粗淺地把這三個榜單理解為收費下載量最高、免費下載量最高,以及收入最高,但是事實要 比這復雜許多。如果對榜單進行一段時間的觀測,保持每半個小時刷新一下,我們可以發現榜單正在不停地變化。那麼是這半個小時之內的下載量的改變造成了榜單 的變化嗎?我們無從得知,關於排名的規則,蘋果公司一直在調整,曾經有人推算過,據稱和幾天之內的下載量、增量等都有關系。而在今年四月,排行榜的異動又 讓人猜測是否是蘋果加大了用戶活躍度所佔的比重。這一切都是推測,但無論如何,我們能看到蘋果正在無形中要求開發者做出更優秀的產品。
    成功打榜的策略
    那麼如果開發者在對排行榜進行了充分的分析,決定了產品的開發方向,又經過卓越的努力做出了一款優秀的產品後,怎樣才能讓自己的產品打入排行榜呢? 首先,最直接有效的方法就是能夠被蘋果編輯推薦,進入了推薦榜(北京時間每周五推薦一次)後,就會有更多機會沖擊排行榜。去年,來自上海coconuts island公司的產品finger balance就因為被推薦而一舉沖到了top paid 6。至於怎樣才能夠上推薦,我請教過蘋果的全球開發者關系負責人,他的回答很簡單:「優秀的作品!」每周能得到推薦的產品個數畢竟有限,而且即便得到了推薦,所在推薦位也會影響沖榜的效率。舉例來說,同樣是游戲,進入首頁推薦的話,就比進入游戲推薦更有機會;同樣是首頁推薦,排在前面的自然也比排在後面的 有更多的曝光機會。可惜無論能否被推薦,以及獲得推薦後的位置,都是我們這些開發者完全無法控制和預測的,這也是很多開發者把推薦榜變更的這天稱之為「神奇周五」的原因。每周,蘋果都通過這種方式對於優秀的產品給予足夠的曝光,而因此進入排行榜的例子也比比皆是。一旦獲得推薦,為了增加沖榜的成功率,將產品的價格暫時調低也是一種很有效的方式。但是如果發現即便降價也沖榜無力,為了利潤最大化可以將價格改回去,因為上推薦這一周,往往是開發者收入最高的一 周。曾經「上推薦」這件事的效果可以維持一個月,但隨著產品越來越多,蘋果會將周期大大縮短,蘋果一直在調整相關的策略,作為開發者,最好的選擇就是接受 變化,適應變化。
    如果因為運氣不好等原因,沒有得到蘋果公司編輯的垂青,就需要動用推廣的方式來增加產品的曝光度了。根據多家數據分析公司的統計,直接在iOS設備上進行購買行為的佔到全部用戶的90%以上,因此推廣方式也應集中在針對iOS設備的服務為主,至於Web廣告、利用公關公司等手段,對於小工作室來說並不建議,基本上會導致入不敷出。
    最簡單的對收費產品的推廣方式,就是做一個功能有限的免費版。
    早在2009年,來自香港epicforce公司的傳奇作品ifighter,就憑借沖到過top free 1的免費版,將收費版推到最高top paid 2的位置,創造出國人開發者的一個神話。所以免費版是無論如何都要做的,至於是在收費版上線之前、之後,還是同時推出,並沒有一定之規,開發者可以根據實 際情況來決定。免費版的設計要點在於恰到好處地勾起用戶的興趣。還以ifighter為例,正式版本有四個關卡,而免費版只有一個關卡,但效果非常之好。 如果免費版給出三關,就會有用戶覺得只為一關付費不值當;同樣道理,如果免費版只有第一個關卡的前面部分,用戶還沒有感覺到游戲的樂趣時就結束,也是不恰 當的。
    因為幾乎所有人都意識到免費版的重要性,所以免費應用軟體排行的競爭也是異常激烈的。美國top free 第一名(iPhone)的日下載量要超過十萬,iPad的日下載量超過兩萬,中國top free 第一名(iPhone)的日下載量五萬,iPad的日下載量也是兩萬多(是的,中國iPad的保有量和美國相當),所以盡管是免費產品,但要想達到大規模 的下載量,有時也需要花廣告費,才能將產品推到更好的位置。而且,免費榜裡面參與競爭的不僅僅是免費版,經常會有收費產品的限時免費版來湊熱鬧。
    有些開發者不理解,為什麼要收費轉免費?他們認為這會減少潛在用戶。其實這個顧慮完全沒有必要,即便是第一名每天過十萬的下載,對於蘋果龐大的用戶 群來說,也不過是九牛一毛。基本上,如果收費產品免費後,能進入top free比較靠前的位置的,轉回收費後,都能有不錯的成績。幾乎每周都能看到有產品通過這種方式,重新殺回收費排行榜的。這裡面要注意的地方是,免費的時 間絕不能短,如果只有幾個小時就匆匆忙忙改回去,是完全沒效果的,只要產品還在排行榜上不斷爬升,就不要停止,越多的人看到並下載你的產品,口碑傳播的效 果就越好,當然也不能無限制地免費下去,基本上三天至一周是比較合適的時間。修改價格後,會有很多網站收錄價格變化的消息,因為被很多用戶得知,也因此催 生了一些專門做相關推廣的公司。國內,做得比較好的是iapps.im和ewtang.com,如果想在國內沖擊免費榜的,可以和這兩家聯系。
    回到免費版上來,免費版長期占據免費榜,就基本上能保證收費版長期占據收費榜,這是App Store里最健康的生存模式,但是即便在產品發布時,免費版進入了排行榜,如果希望能長期留存在榜單裡面,有時候會需要採用購買廣告的方式。目前提供這 種服務的公司有很多,蘋果自己的iAd也在其中,另外比較有名的就是AdMob了,他們提供的服務都是根據一個用戶的點擊合多少錢來計算的,換算到下載, 可能一個有效的免費版下載要一美元甚至更多。這就需要開發者在考慮自己產品的ARPU之後來決定是否要進行廣告投放。這裡面有一個誤區,投放廣告的主要目 的不是立刻把廣告費用賺回來,而是將產品推到排行榜一個比較不錯的位置,讓下載進入良性循環,以獲得更多的曝光。如果產品推到高位後一旦廣告投放停止迅速 下滑,就說明產品本身還是存在一定的問題,是修改後繼續推廣,還是乾脆放棄進行新的產品開發就要開發者自行判斷了。需要強調的一點是,有時候產品製作得很 不錯,但是圖標、名字、截圖,以及描述這些所謂的「表面功夫」不到位,也會影響用戶的下載慾望,畢竟很多用戶是沖動型下載,如果上述幾個部分有瑕疵,在選 擇面非常大的前提下,用戶可能就選擇其他產品了,這種情況並不少見,所以請開發者一定要注意。
    另外一種比較有效的方式,就是系列化產品之間的相互推廣。空中網的僵屍危機系列已經出了三部曲,四月份剛通過序章免費的方式,將一代順利推入了 top paid 100。這種方式也可以用在同樣類型的產品上,比如美國的chop chop系列,經常免費其中一個來推廣其他作品,效果還不錯。這種方式能成功的原因很簡單,用戶免費獲得其中一個產品,覺得很好的話,自然會認為另一個同 系列或者同類型產品也會優秀,於是產生了付費意願。
    免費榜單的競爭,多少有規律可尋,收費榜單的競爭,單靠廣告模式就比較難了,上面提到一個免費下載的花費可能是一美元以上,而用同樣的廣告資源,一個收費版下載的花費可能要貴十倍都不止,所以相對來說,進行免費版本的推廣會更加有效。

    熱點內容
    printklinux 發布:2022-08-18 10:22:54 瀏覽:798
    人證比對源碼 發布:2022-08-18 10:21:13 瀏覽:74
    php的小於等於 發布:2022-08-18 10:20:45 瀏覽:614
    養雞的演算法 發布:2022-08-18 10:16:30 瀏覽:883
    掃描軟體源碼 發布:2022-08-18 10:13:30 瀏覽:34
    python修改json 發布:2022-08-18 10:13:25 瀏覽:252
    華為手機密碼如何改長度 發布:2022-08-18 10:12:32 瀏覽:139
    伺服器雙機熱備如何配置 發布:2022-08-18 10:12:12 瀏覽:974
    linux服務自啟動 發布:2022-08-18 10:11:06 瀏覽:365
    百度演算法倉 發布:2022-08-18 10:10:50 瀏覽:760