3

App-Store アプリを作成しましたが、VoIP UIBackgroundMode (ソケットを開いたままにする) を使用してバックグラウンドで実行できるように微調整したいと考えています。UIBackgroundModes は Info.plist ファイルに保存されます。

Cydia でアプリに VoIP UIBackgroundMode を与える最良の方法は何ですか? アプリの Info.plist ファイルを変更するのは単なるスクリプトでしょうか (これがアプリの署名を壊して問題を引き起こさないと仮定して)、または微調整でオーバーライドできる機能はありますか?

(どちらの方法でも、この UIBackgroundMode を使用するために必要なアプリのコードに最小限の変更を加えることができ(モードが実際に設定されている場合にのみ実行されます)、Apple はこれを検出しないと思います。私はすでに VoIP でアプリを送信しましたUIBackgroundMode がアクティブであり、Apple によって拒否されました。それと対応するコードを削除すると、アプリは受け入れられました。)

4

1 に答える 1

4

はい、できます。アプリの Info.plist ファイルを変更するだけです (場合によっては再起動することもできます)。

ジェイルブレイクされたデバイスでは、App Store アプリの Info.plist ファイルを変更しても、アプリの署名に問題は発生しません。

プログラムでそれを行う方法を見つけることができると思いますが、正直なところ、スクリプト以上のものが必要かどうかはわかりません。一度だけ変更を加えているだけですよね?したがって、私には、この変更を単純にスクリプト化して、「微調整」パッケージDEBIAN/preinstまたはDEBIAN/postinstファイルに入れるだけで十分なように思えます。

私はいくつかの考えを持っています:

1.デフォルトでは、Info.plist ファイルはバイナリになるため、(スクリプトによる) 編集が難しくなります。これは、plist ファイルを変更する前に次のコマンドを発行することで、非常に簡単に回避できます。

plutil -convert xml1 Info.plist

アプリの.appディレクトリ内から。これにより、Info.plist がテキスト ファイルとして残ります。をお持ちでない場合はお知らせくださいplutil。どの Cydia パッケージに含まれているかを突き止めます。

注: 編集後に plist をバイナリに変換する必要はありません。テキスト plist も有効です。

2.変更した Info.plist を Debian パッケージにバンドルし、App Store のバージョンを微調整したバージョンに単純に置き換えることを選択する場合があります。ただし、バージョン番号、および新しいバージョンで更新するファイル内のその他のプロパティについて心配する必要があります。その場合、Info.plist の1 つ.appのバージョンをディレクトリにコピーするだけでは、すべてのバージョンで機能しない可能性があります。そのため、使用しているバージョンを検出するか、plist ファイルを検索する必要がある場合があります。

<key>UIBackgroundModes</key>

そこにVOIPモードを挿入します。私はsedawkのようなツールが苦手です。その部分について助けが必要な場合は、おそらくここで簡単なスクリプトの質問をすることができます... iOS は知っています ... スクリプト ... それほどではありません :)

3.何らかの理由でスクリプトが Info.plist でアプリのバージョンを検出する必要がある場合は、次のコマンド ラインでそれを行います。

plutil -key CFBundleVersion Info.plist 

注: これを行うためのプライベート API が存在する可能性はありますが、存在しなくても驚かないでしょう。Apple がこれを行う理由を想像するのに苦労しています。Apple がそうする理由がわからない場合は、API (パブリックまたはプライベート) がない可能性があります。通常、コンパイルUIBackgroundModes時に決定します。

于 2013-12-01T03:16:39.563 に答える