15

iOSアプリで以下のようにコーディングすることは何とか可能ですか?

if(app is live in app store)
{
   //Do something
}
else
{
  //Do other thing
}

QE/開発チームがアプリをテストに使用するケースは避けたかったのです。アプリ コードがどのように署名されているか (開発者/アドホック/ディストリビューション) を検出して確認する方法はありますか? たとえそれが可能であったとしても、Apple がレビューの一部としてテストのために私たちのアプリを使用しているケースを排除することはできません. アプリが App Store で公開される前に、Apple によるコンテンツのダウンロードを多数記録しました。

4

6 に答える 6

10

embedded.mobileprovision がないことを確認することで、アプリがアプリ ストア経由で配布されたかどうかを判断できます。このファイルはアドホック ビルドにのみ含まれます。

このような:

if ([[NSBundle mainBundle] pathForResource:@"embedded"
                                    ofType:@"mobileprovision"]) {
  // not from app store (Apple's reviewers seem to hit this path)
} else {
  // from app store
}

このテクニックはHockeyApp SDK からのものです。私は個人的に、この手法を使用するアプリをストアに持っています。もちろん、HockeyApp SDK を含む多くのアプリが配布されています。

「アプリ ストアから」パスのアプリケーションの特定のビルドで誤ってリリースした即時のクラッシュに基づいて、Apple のチームは「アプリ ストアからではない」パスに従います。私の損失をあなたの利益にしましょう。:)

于 2012-12-18T18:06:10.923 に答える
1

アプリで同様の状況に直面しました。少なくとも私はそうだったと思いますが、あなたの質問を完全に理解しているかどうかはわかりません。

私のアプリでは、アカウントを持つユーザーにコンテンツを作成してもらいます。開発者のコ​​ンテンツ (または Apple の従業員のコンテンツ) がパブリック コンテンツを汚染することを望んでいません。ユーザー データ構造に「テスト」ビットがあり、それがオンになり、テスト コンテンツが公開されません。まだ App Store に提出していませんが、Apple と協力して、Apple のアカウントでこのテスト ビットがオンになっていることを確認する必要があります。

これがあなたの目標ではない場合でも、気にしないでください。:-)

于 2012-03-28T11:43:03.437 に答える
0

迅速

func isAppStoreBuild() -> Bool {

    if NSBundle.mainBundle().appStoreReceiptURL != nil {
        if let _ = NSData(contentsOfURL: NSBundle.mainBundle().appStoreReceiptURL!) {
            return true
        }
    }
    return false
}
于 2015-09-28T19:02:55.773 に答える
0

Swift バージョンの場合:

private static let isTestFlight = NSBundle.mainBundle().appStoreReceiptURL?.lastPathComponent == "sandboxReceipt"

この完全な回答では、それをどのように使用できるかについてより詳しく説明しています。

于 2015-11-20T22:44:20.800 に答える