web-dev-qa-db-ja.com

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

Appstore connectにレビュー用にアプリを送信しました。アプリはまだ審査中ですが、エラーを修正する必要があることを通知する電子メールを受け取りました。メッセージの内容は次のとおりです。

    Dear Developer,

    We identified one or more issues with a recent delivery for your 
    app XXXXX. Your delivery was successful, but you 
    may wish to correct the following issues in your next delivery:

    "Missing Purpose String in Info.plist File. Your app's code 
    references one or more APIs that access sensitive user data. The 
    app's Info.plist file should contain a 
    NSLocationAlwaysUsageDescription key with a user-facing purpose 
    string explaining clearly and completely why your app needs the 
    data. Starting spring 2019, all apps submitted to the App Store 
    that access user data will be required to include a purpose 
    string.If you're using external libraries or SDKs, they may 
    reference APIs that require a purpose string. While your app might 
    not use these APIs, a purpose string is still required. You can 
    contact the developer of the library or SDK and request they 
    release a version of their code that doesn't contain the APIs. 


     After you’ve corrected the issues, you can use Xcode or 
     Application Loader to upload a new binary to iTunes Connect.

     Best regards,

     The App Store Team

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

何か案が ?

107
John doe

Expoを使っているのであれば、infoPlistをapp.jsonに追加してsolveを追加できます。

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

万博ドキュメント

24
gwalshington

2019年4月編集:2019年春が始まったため、これら2つのキーを追加する必要があります。 NSLocationAlwaysUsageDescriptionは廃止され(iOS 11以降)、NSLocationAlwaysAndWhenInUseUsageDescriptionおよびNSLocationWhenInUseUsageDescriptionに置き換えられていることに注意してください。 iOS 11より低いバージョンをサポートする場合は、3つの値を使用する必要があります。

要するに:

  • IOS 11以降ではNSLocationAlwaysAndWhenInUseUsageDescription AND NSLocationWhenInUseUsageDescriptionを追加します
  • IOS 10以下をサポートする場合は、NSLocationAlwaysUsageDescriptionを追加します
  • 最後に、iOS 8以下をサポートしたい場合は、NSLocationUsageDescriptionを追加できます。


このメッセージを受け取った場合でも、アプリを送信できます!

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

アプリが承認されたことを確認できますinfo.plistNSLocationAlwaysUsageDescriptionおよびNSLocationWhenInUseUsageDescriptionキーがなくても

実際、Appleがメールで述べたように:

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

そのため、このキーをプロジェクトに追加するだけで(忘れないように)、次の更新でに含めることができます。

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

39
AnthoPak

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

解決策は簡単で、.plistファイルに次の行を追加してください。

<key>NSLocationAlwaysUsageDescription</key>

<string>custom message</string>

<key>NSLocationWhenInUseUsageDescription</key>

<string>custom message</string>

シモンズ:私の場合は場所の機能を使用していませんが、私はAppstoreの接続のガイドラインに準拠するためにこれらの行を追加しました。その電子メールを受け取った後に、私は彼らがそれがいくつかの問題を抱えていると言ったときでさえ、私はアプリをテストすることができました。

私はあなたのためにこの仕事を願っています。

32
vroldan

場所を使用しなくても、Appleからの新しい要件です。 Xcodeに権限を追加する場合は、[プライバシー - 場所の使用法の説明]および[プライバシー - 使用時の使用法の説明]を探して、それぞれにカスタム文字列を入力します。

enter image description here

9

NSLocationAlwaysUsageDescriptionあなたの場所はあなたのためのxyzの特典に必要ですNSLocationWhenInUseUsageDescriptionあなたのためのxyzの利益のために必要です

7
Sumit Sharma

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

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

つまり、使用していなくても、コード、その他のライブラリ、またはSDKがCoreLocationを使用できるようになると、「使用中」および「常に使用」のプライバシーに関する説明を提供する必要があります。

それはまたAppleからの新しい何かでありそして今のところそれはただの警告であるが、それは新しい提出のために2019年春から必要とされるであろう。

6
sebleclerc

より簡単にするために、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>
    
5
Sachin Nautiyal

だから今、4つのケースがあります。

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

アップルはこう述べています。

"Add the NSLocationWhenInUseUsageDescription key and the NSLocationAlwaysAndWhenInUseUsageDescription key to your Info.plist file."

そして:

"If your app supports iOS 10 and earlier, add the NSLocationAlwaysUsage"

NSLocationUsageDescriptionは無効になっているようです。ADCサイトでの唯一の参照は「 https://developer.Apple.com/ibeacon/Getting-Started-with-iBeacon.pdf 」です。

確かに、最初の3つを使ってください。

4
ingconti

この問題は含まれていないために発生しています

 <NSLocationAlwaysUsageDescription>

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

お役に立てれば。

4
Sachin Nautiyal

これらの答えはすべて、警告を回避するためのApp Storeの規則への準拠方法を示していますが、実際にそれらを使用しない限り、ExpoでロケーションサービスのSDK要件を無効にできるようにすることをお勧めします。可能。

2
Calvin

2月19日に同じ問題は、私が使用していないアクセス許可の束と電子メールを得た、私はそれらがプラグインからであると思います。 Appleは3月19日にそれが必要条件であると言います、それで私はinfo.plstにこれらを加えて、もう一度アップロードしています。

本当に愚かです。

1
Rick Chen

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

行方不明のキーを特定するenter image description here

説明書

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

  2. 追加されたオプションから不足しているキーを検索します(例:Contacts= Privacy-Contacts Usage Description)

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

$(PRODUCT_NAME)には「ここに理由を提供する」ための連絡先アクセスが必要です。

例:

1
Zeus

私も同じ問題に直面していますが、27時間後、私は何もしなかったとしても承認されたというEメールを受け取りました。 それで、このプロセスをすべて繰り返すのではなく、約24時間待ちます。

0
Abdul Qayum

<key>NSLocationWhenInUseUsageDescription </key>の代わりに<key>NSLocationWhenInUseUsageDescription</key>を持っていました

末尾の空白を必ず削除してください

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

0