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

2014年4月15日火曜日

iOSアプリ申請時のIDFAの質問はこう答えるべし

Advertising Identifier(IDFA)に関する質問の答え方


先日(2014/4/10)、iOSアプリのアップデート申請をしたときに、IDFAに関する質問が追加されていました。
※iTunes Connectで『Ready to Upload Binary』ボタン押下時



内容は以下の通りです。

=========================================

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.

If your app is using the Advertising Identifier, check your code—including any third-party code—before you submit it to make sure that your app uses the Advertising Identifier only for the purposes listed below and respects the Limit Ad Tracking setting. If you include third-party code in your app, you are responsible for the behavior of such code, so be sure to check with your third-party provider to confirm compliance with the usage limitations of the Advertising Identifier and the Limit Ad Tracking setting.

This app uses the Advertising Identifier to (select all that apply):

  □Serve advertisements within the app
  □Attribute this app installation to a previously served advertisement
  □Attribute an action taken within this app to a previously served advertisement

If you think you have another acceptable use for the Advertising Identifier, contact us.


Limit Ad Tracking setting in iOS

 □I, **** *****(自分の名前), confirm that this app, and any third party that interfaces with this app, uses the Advertising Identifier checks and honors a user’s Limit Ad Tracking setting in iOS and, when it is enabled by a user, this app does not use Advertising Identifier, and any information obtained through the use of the Advertising Identifier, in any way other than for “Limited Advertising Purposes” as defined in the iOS Developer Program License Agreement.
Previous Purchase Restrictions

=========================================

この質問に答えて申請したアプリが審査を通過したので、回答例として情報を共有します。


アプリの実装


AdMobメディエーションで広告(AdMob,iAd,Nend)を表示しています。
※実装の詳細はこちら

他にIDFAを使用している外部モジュールはありません。
※Google Analyticsは3.03cを実装しているので問題なし


質問の回答


Does this app use the Advertising Identifier (IDFA)?
→Yes

□Serve advertisements within the app
→チェック

 □I, **** *****(自分の名前), confirm that this app,〜
→チェック



審査結果


フィードバック、質問など無くスンナリ審査通過しました。


まとめ


今回はアップデート申請なので、新規の場合は内容が異なる可能性があるのでご注意ください。
以前にもIDFAに関する記事を書いているので、そちらも参考になさってください。




『パズ銭』はハマり過ぎ注意な中毒者続出のパズルゲーム

パズ銭 ~スワイプで両替パズル

2014年3月1日土曜日

IDFA(advertisingIdentifier)「PLA 3.3.12」リジェクトとの闘いの軌跡

IDFA(advertisingIdentifier)「PLA 3.3.12」リジェクトとの闘いの軌跡


二度リジェクトされた私はこうして審査を通過しました



今、iOSアプリ開発者の間で最もホットな話題かもしれないIDFAリジェクト問題。
私もそれで二度リジェクトされましたが、つい先日何とか審査を通過しました。
そこで、他の開発者たちの参考になればとどのような経過を辿ったのかをまとめます。


事の起こり


リジェクト

2014/2/11にアプリの申請を行い、2/19に「In Review」となったのですが審査の結果「App Submission Feedback」、以下の理由でリジェクトされたのです。


Resolution Centerからのメッセージ

==============================================================

Reasons

Program License Agreement


PLA 3.3.12

We found your app uses the iOS Advertising Identifier but does not include ad functionality. This does not comply with the terms of the iOS Developer Program License Agreement, as required by the App Store Review Guidelines.

Specifically, section 3.3.12 of the iOS Developer Program License Agreement states:

"You and Your Applications (and any third party with whom you have contracted to serve advertising) may use the Advertising Identifier, and any information obtained through the use of the Advertising Identifier, only for the purpose of serving advertising. If a user resets the Advertising Identifier, then You agree not to combine, correlate, link or otherwise associate, either directly or indirectly, the prior Advertising Identifier and any derived information with the reset Advertising Identifier."

Note: iAd does not use the AdSupport framework, ASIdentifierManager, or the Advertising Identifier. Therefore they are not required for iAd implementations and should not be included in your app for iAd support. 

Please check your code - including any third-party libraries - to remove any instances of:

class: ASIdentifierManager
selector: advertisingIdentifier
framework: AdSupport.framework

If you are planning to incorporate ads in a future version, please remove the Advertising Identifier from your app until you have included ad functionality.

To help locate the Advertising Identifier, use the “nm” tool. For information on the “nm” tool, open a terminal window and enter, “man nm.” 

If you do not have access to the libraries' source, you may be able to search the compiled binary using the "strings" or "otool" command line tools. The "strings" tool lists the methods that the library calls, and "otool -ov" will list the Objective-C class structures and their defined methods. These techniques can help you narrow down where the problematic code resides.

==============================================================
私はここで初めて「PLA 3.3.12」「advertisingIdentifier」というキーワードを眼にしたのです。


一度目のリジェクト対策

調べてみると「advertisingIdentifier」いわゆるIDFAという広告識別子を広告以外の用途で使用してはならないとのこと。
2014年2月から新しくそのような規約「PLA 3.3.12」が追加された為に大量のリジェクトが発生していることが判明しました。

外部ライブラリに問題あり

私のアプリはAdMobメディエーションでNend、AdMob、iAdを切り替えて表示するようにしていますが、その広告以外でIDFAを使っている覚えがありませんでした。
よくよく調べてみると外部のライブラリで使用している場合があり、私の場合はアクセス解析の「Google Analytics」で使用されていることが分かりました。
他にも効果測定計のモノやあんまり関係無さそうな「Unity」も引っかかるらしいです。

Google Analytics SDKの更新

私が使用していたのはv3(Beta)版で、ビルドするのに「AdSupport.framework」が必要でした。
この「AdSupport.framework」を広告用途以外で使用すると審査に引っかかる模様。
最新のv3.03aでは不要となっていたので、それに更新して2/19に再申請しました。



二度目のリジェクト

2/26にようやく「In Review」となったのですが、またも「App Submission Feedback」、リジェクト理由は以下でした。

Resolution Centerからのメッセージ(二度目)

==============================================================

Reasons

Program License Agreement
Thank you for contacting us.

We have verified that your app contains code that is accessing the Advertising Identifier, however, we did not see ads served in your app. As stated in section 3.3.12 of the iOS Developer Program License Agreement, an app must serve ads in order to use the Advertising Identifier:

“You and Your Applications (and any third party with whom you have contracted to serve advertising) may use the Advertising Identifier, and any information obtained through the use of the Advertising Identifier, only for the purpose of serving advertising. If a user resets the Advertising Identifier, then You agree not to combine, correlate, link or otherwise associate, either directly or indirectly, the prior Advertising Identifier and any derived information with the reset Advertising Identifier.” 

We have seen this behavior in apps that include third-party libraries. These libraries are often analytics engines, ad engines, or other types of third-party services.

We require that you locate and remove this code prior to resubmitting, and recommend that you use the "nm" tool or the command line tools "strings" or "otool -ov" to find the following entities:

- class: ASIdentifierManager
- selector: advertisingIdentifier
- framework: AdSupport.framework

If you are unable to locate these entities, you may wish to work with an Apple Developer Technical Support engineer. 

If you believe your app is serving ads, please:

- ensure that you have tested your app on a device, not just the simulator, and that you have removed previous versions of your app prior to testing

- provide us the steps to locate ads in your app

==============================================================
前回と同じやんけ!



二度目のリジェクト対策


Resolution Centerに返答

広告を掲載しているので「AdSupport.framework」を使用していますが、問題ないはずです。
色々と調べている内にAppleは広告に使っていても「AdSupport.framework」を使っているアプリを闇雲にリジェクトしているという噂があり、どうやら私もそれをやられたようです。
私は怒りを抑えつつ、以下の文面でResolution Centerに返答しました。

返答内容

==================================
I have to display the ad.
So, I'm using "AdSupport.framework".
Are there any problems?
==================================
(広告を表示しています。)
(ですから、”AdSupport.framework”を使用しています。)
(何か問題ありますか?)
上記の意味で翻訳サイトを使った拙い英語で返答しました。
これについての返信は次の日2/27に来ました。


Resolution Centerからの回答

==============================================================

Program License Agreement

Thank you for your response.
However, as stated previously, the app should contain non iAds.
Please let us know if you have any other questions and thank you for your cooperation.

==============================================================
えーと、いいからiAdを消せってことでしょうか?
このメッセージを見た私は「どうせいっちゅうねん」と途方にくれました。


Resolution Centerに返答(二度目)

この後、色々と調べたのですがやはり問題ないはずです。
人によっては広告を表示したスクリーンショットの提出を求められたり、「再申請してくれ」といったら通ったという情報があったので、それらを盛り込んで再度2/27にResolution Centerへメッセージを投げました。
==============================================================
Please look at the screen shot.
I have display ads definitely like this.
Please try the examination again.

スクリーンショットを見てください。
このように間違いなく広告を表示しています。
もう一度審査をやり直してください。


==============================================================
  • 問題ないという証拠としてのスクリーンショットの提示
  • 「再審査をしてくれ」というはっきりとした要求
  • 英語ではニュアンスが違うかも知れないので日本語も併記
一度目を踏まえて上記を盛り込んだメッセージを送りました。
返答はまたしても翌日の2/28、この辺りの非効率さ加減もイライラします。


審査通過

2/28未明にResolution Centerから返答があったようですが、内容は確認できませんでした。
なぜなら、そのあと直ぐにステータスが「In Review」となり速攻で審査を通過していて、朝確認したときには「Ready for Sale」となっていました。
そのときにはもうResolution Centerとのやり取りが見られなくなっていました。
審査は通過したのですが、なんだかモヤモヤが残るあっけない幕切れでした。



闘いを終えて

二度目のリジェクトを食らったときはさすがに参りましたが、ネットに情報を公開している方々のおかげで何とか乗り越えることができました。
なので、今回の私の出来事をここに記すことによって誰かのお役に立てれば幸いです。



二度のIDFAリジェクトを乗り越えたアプリ

ということで3/1に無事アプリをリリースしました。
タップで計算式を作って暗算する知育系アプリです。
あなたの脳偏差値はいくつかな?