Xcode 4.6 で プロジェクトに AdMob を導入時にハマった。その1

公式に記載の手順通り進めても、

Apple Mach-O Linker Error が出てBuild Failedに。

どうにか解決したので記録しておきます。

 

http://d.hatena.ne.jp/tanaponchikidun/20120618/1339979392

↑のブログ記事から原因はだいたいこの辺りと推測。

・追加したファイルがコンパイル対象に含まれていない。

・ファイル名が重複している場合にも同様のエラー文がでたり。

・必要なフレームワークが追加されていなかったり。

 

■対策その1 

Undefined symbols for architecture i386:

  "_OBJC_CLASS_$_ASIdentifierManager", referenced from:

      objc-class-ref in libGoogleAdMobAds.a(GADIdentifierUtilities.o)

  "_OBJC_CLASS_$_SKStoreProductViewController", referenced from:

      objc-class-ref in libGoogleAdMobAds.a(GADOpener.o)

  "_SKStoreProductParameterITunesItemIdentifier", referenced from:

      -[GADOpener openInAppStore:fallbackURLString:] in libGoogleAdMobAds.a(GADOpener.o)

ld: symbol(s) not found for architecture i386

clang: error: linker command failed with exit code 1 (use -v to see invocation)

 

と、エラーが出たので調べてみる。

SKStoreProductViewController

iOS6から追加されたアプリ内でApp Storeへ誘導し、そのままアプリから離脱するこなく購入できる機能

 

従来だと「広告をタップ」→「AppStoreアプリ起動」だったのが、

アプリ内で画面遷移のごとくViewが出てきてアプリの購入ができると。

広告を誤タップして別アプリが起動とか最悪ですからねー、こりゃ便利!

 

で、これを使うためには StoreKit.framework が必要とのこと。

AdMob公式ドキュメントには以下の4つでいいと、、

・AudioToolbox

・MessageUI

・SystemConfiguration

・CoreGraphics

 

ということで、

TARGETS → Buil Phases →  Link Binary With Libraries から

+ ボタンでStoreKit.framework を追加。

エラーその1解決!