ラベル Xcode の投稿を表示しています。 すべての投稿を表示
ラベル Xcode の投稿を表示しています。 すべての投稿を表示

2014年4月25日金曜日

【続報】アプリのアップロード時に「improper advertising identifier [IDFA] usage. your app contains the advertising identifier [IDFA] api but you have not indicated its usage on the prepare for upload page in itunes connect」というメッセージが出る

http://startup-objc.blogspot.com/2014/04/improper-advertising-identifier-idfa.html

以前の記事の続報です。

実はitunesconnectのアップ時の質問に以下の文章があります。

Advertising Identifier Does this app use the Advertising Identifier (IDFA)? The Advertising Identifier (IDFA) is a unique ID for each iOS device and is the only way to offer targeted ads. Users can choose to limit ad targeting on their iOS device.

これをNOと答えると、IDFA使ってませんと解釈されるので注意。

結果、利用したアプリはアップ時に弾かれます。

おまけに、アップしてもいないので、手動リジェクトが出来ません。

ぐぬる。

2014年4月10日木曜日

アプリのアップロード時に「improper advertising identifier [IDFA] usage. your app contains the advertising identifier [IDFA] api but you have not indicated its usage on the prepare for upload page in itunes connect」というメッセージが出る

アプリのアップロード時に以下のメッセージが表示される。

improper advertising identifier [IDFA] usage.
your app contains the advertising identifier [IDFA] api but you have not indicated its usage on the prepare for upload page in itunes connect
直訳
不適切な広告識別子[IDFA]使用法。 
あなたのアプリは、広告識別子[IDFA] APIが含まれていますが、あなたは接続iTunesのアップロードページの準備にその使用法を示していない。
itunes connetで毎回質問される英文の内容をよく読まないでチェックつけてサブミットしたせいかと思うけど、一回アップして手動リジェクトしないと確認出来ないので、よくわからない。
(そもそもアップが出来ないので・・・)

対応としては、AdSupportのフレームワークを外すと通ります。

調査不十分で申し訳ないですが取り急ぎ。


追記(2014-04-28)

続報です。
http://startup-objc.blogspot.jp/2014/04/improper-advertising-identifier-idfa_25.html

2014年3月6日木曜日

XcodeでMissing fileというワーニングが出る

こんなやつです。

これはバージョン管理システムとの不整合で発生するのですが、
なんとも気持ちが悪い。

実際に、このワーニングが出たまま、アプリをAppStoreに申請しちゃってもなんの問題もないし、エラーの原因になる事も無いのですが、ワーニングが出ているだけで精神衛生上よくない。(私は)

なので、消します。

まず、ワーニングをクリックするとコピー出来ます。
これをコピーすると以下の様な文字列がとれます。
file:///Users/take/Desktop/Workspace/プロジェクト名/TableSummaryView.m: warning: Missing file: /Users/take/Desktop/Workspace/プロジェクト名/TableSummaryView.m is missing from working copy
これの前半の
file:///Users/take/Desktop/Workspace/プロジェクト名/TableSummaryView.m
の部分が必要になります。

この文字列の前にsvn rm をつけます。
あとfile://をとります。
svn rm /Users/take/Desktop/Workspace/プロジェクト名/TableSummaryView.m
これをターミナルに貼付けて実行!


これでok

ちょっと伏せ字が多くてすいません。


2013年6月14日金曜日

アプリ申請時にUDIDの件でInvalid Binary となる ... その後解決

先日の記事でアプリにAdMobを組み込んでAppleに申請するとUDID の件で弾かれると書いたかと思います。
http://startup-objc.blogspot.jp/2013/05/udidinvalid-binary.html

これが、AdMobライブラリに非があるのか、Appleの検査モジュールが誤検知したのかわかりませんが、広告を非表示にするという事でアップしました。
(元々広告収入を目的とするアプリでは無かったため。)



今回、アプリを更新する事案がありましたので、再度広告表示に挑戦しました。

一番の疑わしきはAdMob。
ライブラリのページを見てみると。。。
https://developers.google.com/mobile-ads-sdk/download











バージョン上がってるやないかい!
前回は6.4.1だったのが6.4.2、やっぱりこれか・・・


新しいのをダウンロード&展開して、組み込み!
クリーン&アーカイブしてアップ!



























だめか・・・



こういう時はstackoverflowに助けを求める
http://stackoverflow.com/questions/16409966/app-rejected-but-i-dont-use-udid

ibGoogleAnalytics_debug.a が含まれていて、悪さをしているとの事。
罠かよ・・・

ターミナルで以下を実行して、バイナリ内で利用している箇所を探せとあったので、実行してみたところ。
find . | grep -v .svn  | grep "\.a" | grep -v "\.app" | xargs grep uniqueIdentifier


























確かにある。これだな。削除。


再度、クリーン&アーカイブしてアップ!



























だめだな・・・


もしかしてと思いプロジェクトファイルを開く。エディタで。










思った通りや・・・

ライブラリ更新の度にディレクトリ作って追加していったから、
検索パスがその度に増えていました・・・

プロジェクトファイルからの直削除はこわかったので、
xcodeから削除。
















※画像は勢い余って消してしまった後のものです。


再度、クリーン&アーカイブしてアップ!

。。。成功やー!



結局、何が原因かというと、検索パス内に以前のライブラリへのパスが残っていた事が原因。
xcode内で、視覚的にファイルを消したとしても、検索パスには残る。
再度、別のファイルを追加してバージョンアップしている風にはxcode上は見えるんだけど、実際には「検索パスが新たに追加される」ことと「ファイル名単位のファイルパス」が追加されるようです。

そのため、検索パスの最初にあるAdmobの6.2.1の「同名ファイル」が選択されてAppleに弾かれていた模様。。。

もちろん、ibGoogleAnalytics_debug.aのファイルを消した事も影響しているかも知れないけど、検証しなおす余力がありません。

最終的なまとめとしては、検索パスをチェック。


なお、こういう目に遭うのは、ライブラリをバージョン別に分けて管理したがる僕みたいなタイプの人間で、ライブラリを上書き更新かけるタイプの方は、問題ない模様。
(twitterとか見たけど、みんな普通に出来ているしね。。。)


2013年5月7日火曜日

アプリ申請時にUDIDの件でInvalid Binary となる


何の気なしに、アプリを更新申請すると以下の様なメールが届いた。

Non-public API usage:
  • Apps are not permitted to access the UDID and must not use the uniqueIdentifier method of UIDevice. Please update your apps and servers to associate users with the Vendor or Advertising identifiers introduced in iOS 6.
どうやら、UIDevice の uniqueIdentifier は非推奨APIになったので、利用したものは受け付けないよ。

との事らしい。。。
(2013年5月1日よりそうなった模様)

急いで修正&更新申請したが、同様のメールが届けられる。。。




外部ライブラリだ!
と閃き、AdMobのサイトに行くと、案の定ライブラリが更新されている。

今までは6.2.1のバージョンを利用していたが、6.4.1を導入。

だがまたAppleから突き返される。。。


ここで試しにXcode をバージョンアップ、もしかして本来は入っていなければならないライブラリをバージョンアップを怠った事によって入れていなかったのかな・・・と


これも関係なく弾かれる。。。


どう考えても怪しいのはAdMobのライブラリ。
そこで試しにライブラリをアプリ内から除去。


問題なく申請が通る・・・おい!



Twitterとかで調べても、みんな「6.4.0以降は大丈夫だ」とつぶやいていたが、6.4.0は大丈夫だったかもしれないが6.4.1は駄目な模様。
そして、6.4.0に関してはもうダウンロードできない。

とりあえず広告非表示の件は適当な理由を付けて、申請しました。


実際に、AdMobでUDIDを利用しているのかは不明ですが、
Appleにバイナリを申請した際には、「そう検知される」


ぐぬぬ。


追記(2013-06-20):

以下の対応でAdMobが利用できるかも知れません。
http://startup-objc.blogspot.jp/2013/06/udidinvalid-binary.html

PCH file built from a different branch ((clang-425.0.24)) than the compiler ((clang-425.0.28)) というエラーが発生


PCH file built from a different branch ((clang-425.0.24)) than the compiler ((clang-425.0.28))

のエラーが発生、とりあえず「Derivered Data」と「Clean」を実行したらエラー解消。

Xcodeのバージョンアップをしたので、何かのキャッシュが残っていたのかも・・・

2013年4月23日火曜日

CoreDataのSQL実行ログをXCodeのログビューに吐き出す

アプリの実行中にSQLのログを吐き出させたい時があると思います。

設定方法は以下のような手順

1.Xcodeの左上のアプリ名のところをクリックして「Edit Scheme...」をします。

2.「Run アプリ名」の「Arguments」タブ。
「Arguments Passed On Launch」の箇所に「-com.apple.CoreData.SQLDebug 1」と入力します。
3.表示されます。


2013年2月15日金曜日

Unused variable 'xxx' となる・・・

例えば、以下のような定義をしたときに Unused variable 'xxx' のワーニングが出る場合がある。

static const NSString *xxx = @"xxx";


Xcodeや、プリコンパイラのバージョンに依存するかもしれないけど、上記の定義でワーニングが出る場合は、constの位置が関係している。

以下の様に変更するとワーニングはなくなる。
static NSString * const xxx = @"xxx";

2013年2月2日土曜日

実機転送時にエラーがでる。Code Sign error: Certificate identity 'iPhone Developer: <自分の名前>' appears more than once in the keychain. The codesign tool requires there only be one.

実機転送時にエラーがでる。
Code Sign error: Certificate identity 'iPhone Developer: <自分の名前>' appears more than once in the keychain. The codesign tool requires there only be one.

これで検索すると、「キーチェーン内に同じ証明書の期限切れが複数あるから消してね」っていう記事が見つかるんだけど、僕の場合は見つからない。。。



小一時間悩んで、気づいたのは「有効期限切れの証明書」が表示されないようになってました。。。

設定を変更して、ok!
赤い×マークが出るので消していけば、ビルドが通るはずです。

2013年2月1日金曜日

変数命名時にseから始まる名称はやめよう

変数命名時にseから始まる変数名はなるべく回避しよう。

「self」と入力しようとして「se」と打った段階で、
Xcodeのコードアシスト機能で、self以外の変数が選択されてしまう場合があります。
(私の場合は高確率で。。。)

NSString *searchName; なんて変数を作りたいときがありますが、
NSString *conditionName; とかにするといいかも