web-dev-qa-db-ja.com

React Native、AppStoreはNSLocationAlwaysUsageDescriptionの値を要求します

React Nativeです。アプリストアに正しくアップロードしましたが、今日はアプリが拒否され、次のメッセージが表示されます。

Info.plistキーがありません-このアプリは、使用法の説明なしでプライバシーに敏感なデータにアクセスしようとします。アプリのInfo.plistには、アプリがこのデータをどのように使用するかをユーザーに説明する文字列値を持つNSLocationAlwaysUsageDescriptionキーが含まれている必要があります。

Info.plistキーがありません-このアプリは、使用法の説明なしでプライバシーに敏感なデータにアクセスしようとします。アプリのInfo.plistには、アプリがこのデータをどのように使用するかをユーザーに説明する文字列値を持つNSLocationWhenInUseUsageDescriptionキーが含まれている必要があります。

私のアプリはいかなる種類の位置情報サービスも使用していません。アプリストアに公開された最後のバージョンも更新されていないため、npmパッケージは変更されていません。同じバージョンです。

だから、なぜAppleはユーザーの場所にアクセスしようとしていると言っているのかわからない。

Apple Store?の変更です。アプリがユーザーの場所にアクセスしようとしている場所を確認するにはどうすればよいですか?

これは私のpackages.jsonです

  "dependencies": {
    "axios": "^0.17.1",
    "lodash": "^4.17.4",
    "moment": "^2.18.1",
    "react": "^16.0.0",
    "react-addons-shallow-compare": "^15.5.2",
    "react-native": "0.53.0",
    "react-native-drawer": "^2.3.0",
    "react-native-elements": "^0.19.0",
    "react-native-fetch-blob": "^0.10.5",
    "react-native-fs": "^2.3.3",
    "react-native-linear-gradient": "^2.0.0",
    "react-native-onesignal": "^3.0.7",
    "react-native-orientation": "^3.0.0",
    "react-native-pdf": "^3.0.0",
    "react-native-progress": "^3.4.0",
    "react-native-render-html": "^3.8.1",
    "react-native-router-flux": "^4.0.0-beta.28",
    "react-native-vector-icons": "^4.1.1",
    "react-native-video": "^2.0.0",
    "react-native-video-controls": "^2.0.0",
    "react-redux": "^5.0.4",
    "redux": "^3.6.0",
    "redux-thunk": "^2.2.0"
  }

ありがとうございました。

21
David Rojo

@TylerTheCompilerがコメントで指摘したように、再び機能します。同じコンピレーションを再度アップロードしましたが、アプリが承認されました。したがって、Appleからの問題でした。

1
David Rojo

Appleは、 here を説明するように、プライバシー関連のAPIの呼び出しについてバイナリをスキャンします。

上記のリストから、NSLocationAlwaysUsageDescriptionの要件をトリガーするメソッド呼び出しはCLLocationManager requestAlwaysAuthorization。 RN 0.46コードベースのクイック検索から、この呼び出しはreact-native/Libraries/Geolocation/RCTLocationObserver.mおよびreact-native-permissionsそのため、JSからこのコードを呼び出さなくても、バイナリに存在するという事実により、Appleがフラグを立てます。

最も簡単な解決策は、NSLocationAlwaysUsageDescriptionにplistエントリを追加することです。これは、許可を求めない場合、ユーザーには表示されません。今朝、この問題がアプリストアにアップロードされ、フラグを追加した後、アプリは問題なくレビューしました。

技術的には、XcodeプロジェクトからのlibRCTGeolocationのリンク解除も機能するはずです。ただし、これをテストしていないため、アプリが引き続き正常に実行されることを保証できません。

18
Jordan Duncan

Xcodeの左パネルのライブラリフォルダからRCTGeolocation.xcodeprojを削除するだけです。本当に肯定的な場合は、地理的な場所に依存しません。 .xcodeprojを削除すると、ライブラリのリンクが解除されます。

1
goodhyun