エラーAppstore接続:Info.plistファイルに目的文字列がありません


153

App Store Connectにレビューのためにアプリを提出しました。アプリはまだ審査中ですが、エラーを修正する必要があることを通知するメールを受け取りました。メッセージの内容は次のとおりです。

親愛なる開発者、

アプリXXXXXの最近の配信に1つ以上の問題が見つかりました。配信は成功しましたが、次の配信で次の問題を修正することをお勧めします。

「Info.plistファイルに目的文字列がありません。アプリのコードは、機密性の高いユーザーデータにアクセスする1つ以上のAPIを参照しています。アプリのInfo.plistファイルには、アプリが必要とする理由を明確かつ完全に説明するユーザー向けの目的文字列を含むNSLocationAlwaysUsageDescriptionキーを含める必要がありますデータ。2019年春以降、ユーザーデータにアクセスするApp Storeに送信されたすべてのアプリには、目的の文字列を含める必要があります。外部ライブラリまたはSDKを使用している場合、目的の文字列を必要とするAPIを参照する場合があります。アプリがこれらのAPIを使用しない場合でも、目的の文字列が必要です。ライブラリまたはSDKの開発者に連絡して、APIを含まないコードのバージョンをリリースするように依頼できます。

問題を修正したら、XcodeまたはApplication Loaderを使用して、新しいバイナリをiTunes Connectにアップロードできます。

宜しくお願いします、

App Storeチーム

私のアプリはExpoで完全に構築されており、Info.plistにアクセスして変更する方法がわかりません。

何か案が?


3
アプリで位置情報サービスも使用していないため、最新のビルドでも同じ問題が発生しています。そして、Appleはこの変更についての公式文書を持っていません。
huong

3
+1 2日前に同じアプリのリリースを行いましたが、すべて問題ありません。2日後、数行のコードを変更して新しいリリースを実行しました(ポッドなどを追加しませんでした)。このメッセージが表示されました
Tiago Ornelas

2
同じ問題が発生しました。(おそらく)承認プロセスのバグだと思います。週末は無視し、月曜日に修正されることを願っています。
AMB 2018

2
私のアプリは常に位置情報サービスを常に必要としているわけではありませんが、私は今まさに同じ問題に直面しました。目的の文字列が既にあるNSLocationWhenInUseUsageDescriptionが必要です。たぶんこれはAppleの終わりの単なるグリッチなのだろうか?
ilight 2018

3
そしてApple風に、彼らがそれを修正するために彼らが電子メールで提供するリンクは壊れています。
gwalshington

回答:


45

Expoを使用している場合は、次のようにinfoPlistをapp.jsonに追加して、ソルブを追加できます。

  "expo": {
     "ios": {
       "bundleIdentifier": "com.app.myapp",
       "infoPlist": {
         "NSLocationAlwaysUsageDescription": "Some message to appease Apple.",
       },
     },
   }

Expo Docs


25
実際には「Appleをなだめるための何らかのメッセージ」ではありませんが、この場合、ユーザーが生成したデータ(場所)をどのように処理しているのかをユーザーに通知します。これはプライバシーの問題であり、アプリのユーザーにとって公平であることが良いと思います。
Lookaji、

4
ゲッチャ!私はそれを残したくなるかもしれない初心者に考えていました!私は不機嫌そうに聞こえたくありませんでした:)乾杯!
Lookaji、

@gwalshington app.jsonにエキスポオブジェクトがありません
Heemanshu Bhalla

@HeemanshuBhallaうーん、なぜかわかりません。私のapp.jsonでは、それが一番上にあり、最初のオブジェクトが宣言されています。ここで、バージョン番号、バンドル識別子などを宣言します。アプリをイジェクトした場合、外観が少し異なる可能性がありますか?
gwalshington

2
位置データを収集しない場合に入力するテキストは何ですか?S:私たちは嘘を補うために必要がある
プリモジュKralj

62

2019年4月の編集2019年の春が始まったので、これらの2つのキーを追加する必要があります。注NSLocationAlwaysUsageDescription今(iOSの11以降)は推奨されませんとに置き換えられているNSLocationAlwaysAndWhenInUseUsageDescriptionNSLocationWhenInUseUsageDescription。iOS 11より前のバージョンをサポートする場合は、3つの値を使用する必要があります。

要約すると、次のことを行う必要があります。

  • NSLocationAlwaysAndWhenInUseUsageDescriptionAND NSLocationWhenInUseUsageDescriptionをiOS 11以降に追加
  • NSLocationAlwaysUsageDescriptioniOS 10以下をサポートする場合は追加します
  • 最後に、NSLocationUsageDescriptioniOS 8以下をサポートする場合は追加できます。


このメッセージが表示されても、アプリを送信できます。

アプリが位置情報機能を使用していない場合でも、昨日同じ問題に直面しました。このオプション機能を持つプロジェクトに含まれるいくつかのフレームワークに関連している可能性があります。

私は私のアプリが承認されたことを確認することができさえなしNSLocationAlwaysUsageDescriptionNSLocationWhenInUseUsageDescriptionキーでinfo.plist

確かに、アップルがメールで述べたように:

2019年春以降、ユーザーデータにアクセスするApp Storeに送信されるすべてのアプリには、目的の文字列を含める必要があります。

したがって、行うべき唯一のことは、プロジェクトにこのキーを追加することです(今のところ、忘れられないようにするため)、次の更新に含まれるようにします

キーとしてinfo.plistNSLocationAlwaysUsageDescriptionおよびNSLocationWhenInUseUsageDescriptionキーとして2つの新しいエントリを追加し、値としてそれらを使用する理由の簡単な説明を追加します(実際に使用しない場合でも...)。


2
2019年4月の編集で、非推奨が取り消されていないことを確信していますか?私が見るところから、NSLocationUsageDescriptionは廃止されたものです。ここを見る:developer.apple.com/library/archive/documentation/General/…–
apricity

アップルから受け取ったメールにNSLocationAlwaysUsageDescriptionが記載されているので、彼はそれを元に戻したと思います。
Dror Bar

@apricity @DrorBar申し訳ありませんが、間違いなく私は間違いを犯しました。それは元に戻されませんでしたが、それでも間違いがありました。(以前に書いたように、申し訳ありませんが...)ではなくand にNSLocationAlwaysUsageDescription置き換える必要があります。回答を更新して、プロセスの要約を追加しました。NSLocationAlwaysAndWhenInUseUsageDescriptionNSLocationWhenInUseUsageDescription NSLocationUsageDescription
AnthoPak

48

ストアにいくつかのアプリがあり、QAのバージョンを配布しようとしましたが、2つの異なるアプリで同じことが起こりました。これは、Appstore接続へのビルドのアップロードを受け入れるための新しい基準だと思います。

解決策は簡単です。次の行を.plistファイルに追加します。

<key>NSLocationAlwaysUsageDescription</key>

<string>custom message</string>

<key>NSLocationWhenInUseUsageDescription</key>

<string>custom message</string>

PS:私の場合、位置情報の機能を使用していませんが、Appstore接続ガイドラインに準拠するためにこれらの行を追加しました。ところで、そのメールを受け取った後、ビルドに問題があると言われてもアプリをテストできました。

この作業が皆さんに役立つことを願っています。


5
うわー、私はこれを手に入れました、誰もがこれもちょうど得ていることに気づきました!
キャメロンA.エリス

最初のキーは今のところ<key>NSLocationUsageDescription</key>
Hudi Ilfeldに

1
info.plistを更新した後、再アーカイブする必要がありますか?
Bishoy Hanna

新しいバイナリをアップロードするには、バンドルバージョンまたはバージョン番号を増やす必要がありますか?
Dror Bar、

20

場所を使用しない場合でも、これはアップルからの新しい要件です。Xcodeで権限を追加する場合は、「プライバシー-場所の使用法の説明」と「プライバシー-使用中の場所の使用法の説明」を探し、それぞれにカスタム文字列を入力します。

ここに画像の説明を入力してください


1
他のアプリの更新では、Appleもこの許可を要求しました:「プライバシー-常に場所の使用法の説明」
JuanJoséRamírez'31

2
したがって、これらの機能を使用しない場合、「将来の使用のために場所を収集する」などのように、嘘をつく必要がありますか?
ルスランシャシコフ

はい、質問があればAppleから連絡があります
JuanJoséRamírez19年

私のxcode 10.1で情報プロパティリストを見つけることができません。どこにあるかについて言及しておく必要があります。ターゲットとプロジェクトの両方のビルド設定を探しました
Awais Nasir

1
ターゲット
Awais Nasir

15

より簡単にするために、これらの行をinfo.plistに追加できます。これらのエラーが発生するのは、2019年春から、ユーザーデータにアクセスするApp Storeに送信されるすべてのアプリに目的文字列を含める必要があるためです。

  1. ソースコードとしてinfo.plistを開きます。
  2. 次の行をplistに追加します

    <key>NSLocationAlwaysAndWhenInUseUsageDescription</key>
    <string>$(PRODUCT_NAME) needs Location access for "some reason"!</string>
    <key>NSLocationWhenInUseUsageDescription</key>
    <string>$(PRODUCT_NAME) needs Location access for "some reason"!</string>
    <key>NSLocationAlwaysUsageDescription</key>
    <string>$(PRODUCT_NAME) needs Location access for "some reason"!</string>

2
<key>タグの余分なスペースを削除する必要があり、それが機能しました。
innich

@innichそれを指摘してくれてありがとう、私は私の答えを変更しました。
Sachin Nautiyal

8
##このキーをinfo.plistファイルで使用する

NSLocationAlwaysUsageDescriptionあなたの場所は、xyzのメリットのために必要ですNSLocationWhenInUseUsageDescriptionあなたの場所は、xyzのメリットのために必要です


8

同じメールを受け取りましたが、CoreLocationをまったく使用していません。簡単な検索の結果、Parse SDKがCoreLocationを使用できることがわかりました。Appleの電子メールで、彼らははっきり言っている:

外部ライブラリまたはSDKを使用している場合、目的の文字列を必要とするAPIを参照する場合があります。

つまり、コードまたは他のライブラリやSDKがCoreLocationを使用できる分は、使用しない場合でも、「使用中」と「常に使用」のプライバシーの説明を提供する必要があります。

これはAppleからの新機能でもあり、現時点では警告にすぎませんが、2019年の春以降、新しい申請を提出する必要があります。


それはただ愚かです...私がそれを使用していない場合、それだけで人々が私のアプリをダウンロードしない可能性があります。-_-
Mayoul 2018

3
あんまり。ローカリゼーションの使用を求めるアラートは、コードのどこかでCLLocationManager.requestWhenInUseAuthorization()呼び出されない限り表示されません。Appleは各アプリのコードを分析して、そのような関数が呼び出されるかどうかを確認しました。呼び出されない場合、アラートは表示されません。
sebleclerc 2018

6

あなたが含まれていないため、この問題が発生しています

 <NSLocationAlwaysUsageDescription>

あなたのアプリのために。AppStoreでアプリを送信しようとしたときに、同じ問題に直面しました。アプリの処理後、同じメールが届きました。説明を追加し、解決しました。

お役に立てれば。


これは私を助けました。アプリでLocationを使用している場合(またはおそらく常に)、この行とその下の文字列を追加する必要があります。 <key>NSLocationAlwaysUsageDescription</key> <string>Always And In Use Permission</string>
MaylorTaylor

6

以下の場合があります。

NSLocationAlwaysAndWhenInUseUsageDescription (iOS>11)
NSLocationWhenInUseUsageDescription          (iOS>11)
NSLocationAlwaysUsageDescription             (iOS<=10)
NSLocationUsageDescription                   (seems very old, iOS8?)

Appleは次のように述べています。

NSLocationWhenInUseUsageDescriptionキーとNSLocationAlwaysAndWhenInUseUsageDescriptionキーをInfo.plistファイルに追加します。

そして:

アプリがiOS 10以前をサポートしている場合は、 NSLocationAlwaysUsage

NSLocationUsageDescription死んでいるようです、ADCサイトでの唯一の参照は次のとおりです:https : //developer.apple.com/ibeacon/Getting-Started-with-iBeacon.pdf

したがって、念のため、最初に3を使用してください。


3

これらの回答はすべて、警告を回避するためにApp Storeルールに準拠する方法を示していますが、実際の修正は、Expoが実際に使用しない限り、位置情報サービスのSDK要件を無効にできるようにすることです-これが正しいかどうかはわかりません可能。


3

2月19日の同じ問題で、私が使用していない多数の権限が電子メールで届きました。それらはプラグインからのものだと思います。Appleは3月19日にそれが要件であることを言っているので、これらをinfo.plstに追加して再度アップロードしています。

本当にばかげています。


2
コメントの詳細...?
スティーブ

3

私も同じ問題に直面していますが、27時間後に、何もしなくても承認に関するメールを受け取りました。したがって、このすべてのプロセスを再度実行する代わりに、約24時間待ちます。


1
はい、それはバグです!
Danh Huynh、


2

** App Store Connect **から受け取ったメールを確認してください

不足しているキーを特定する ここに画像の説明を入力してください

指示

  1. info.plistファイルを開きます。

  2. 提供されたオプションから不足しているキーを追加して検索します(例:連絡先 =プライバシー-連絡先の使用法の説明)

  3. 使用法の説明を追加:

$(PRODUCT_NAME)には、「ここに理由を入力してください」への連絡先アクセス権が必要です。

例:


1
私は同じエラーが発生しましたが、なぜinfo.plistに追加するのですか?実際にアプリで連絡先機能を使用していないので、なぜそれを追加する必要があるのですか?
Kapil soni

@Kapilsoni機密ユーザーデータにアクセスできる1つ以上のAPIにアクセスしていないことを確認してください
Zeus

1
:sir私はアプリでカメラと場所のみを使用しましたか?
Kapil soni

2

Xcode 11でキーNSLocationAlwaysUsageDescriptionをコピーし、これをInfo-> Custom iOS Target Properties->に追加し+ます。このタブの左下にあるをクリックし、値としてのような説明を挿入しThis app requires location access to function properly.ます。


2

「Info.plistファイルに目的文字列がありません。アプリのコードは、機密性の高いユーザーデータにアクセスする1つ以上のAPIを参照しています。アプリのInfo.plistファイルには、アプリが必要とする理由を明確かつ完全に説明するユーザー向けの目的文字列を含むNSLocationAlwaysUsageDescriptionキーを含める必要がありますデータ。2019年春以降、ユーザーデータにアクセスするApp Storeに送信されたすべてのアプリには、目的の文字列を含める必要があります。外部ライブラリまたはSDKを使用している場合、目的の文字列を必要とするAPIを参照する場合があります。アプリがこれらのAPIを使用しない場合でも、目的の文字列が必要です。ライブラリまたはSDKの開発者に連絡して、APIを含まないコードのバージョンをリリースするように依頼できます。

ソースコードとしてinfo.plistを開きます。
次の行をplistに追加します

<key>NSLocationAlwaysAndWhenInUseUsageDescription</key>
<string>$(PRODUCT_NAME) needs Location access for "some reason"!</string>
<key>NSLocationWhenInUseUsageDescription</key>
<string>$(PRODUCT_NAME) needs Location access for "some reason"!</string>
<key>NSLocationAlwaysUsageDescription</key>
<string>$(PRODUCT_NAME) needs Location access for "some reason"!</string>

1

私のアプリもそれを得ました、そして私はそれについて何もしませんが、それはうまくいくことができます、次に私がそのようなキーをplistに追加するべきだと思うとき、ちょうどいくつかの説明をしてください


1

上記の問題への短い答え-

NSLocationAlwaysUsageDescription Info.plistファイルの次の説明で更新する必要があります

{あなたのアプリ名}は、デング熱の発生地域を示唆する場所にアクセスする必要があります。


0

この例ではNSLocationWhenInUseUsageDescription、アプリで使用していましたが、ではありませんでしたNSLocationAlwaysUsageDescription

ここのコメント(matt-oakesに感謝)を読むと、NSLocationAlwaysUsageDescription使用している依存関係フレームワークの1つで使用されているように見えます。

アプリを実行しても、実際のNSLocationAlwaysUsageDescription権限モーダルは表示されないため、これをバックグラウンドで処理するように見えます。

つまり、要約するNSLocationAlwaysUsageDescriptionと、Info.plist に追加すると警告メールが修正され、アプリの動作は変更されませんでした👍🏻

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.