私は自分の好みで GUI を取得する安価な方法として、自分のアプリケーションに設定バンドルを追加することに取り組んでいます。アプリケーションのボタンからこれを起動することは可能ですか?それとも、ユーザーは組み込みの設定アプリケーションを介して手動でアクセスする必要がありますか?
6 に答える
方法によっては、設定アプリケーションに移動する必要がある場合があります。
このドキュメントの「アプリケーション設定」セクションを参照してください。紹介の関連セクションは次のとおりです。
アプリケーション設定を設定アプリケーションに追加することは、生産性スタイルのアプリケーションや、設定値が通常 1 回構成され、その後ほとんど変更されない状況に最も適しています。たとえば、メール アプリケーションはこれらの設定を使用して、ユーザーのアカウント情報とメッセージ チェック設定を保存します。設定アプリケーションは環境設定の階層表示をサポートしているため、環境設定が多数ある場合は、設定アプリケーションから環境設定を操作する方が適切です。アプリケーションで同じ設定のセットを提供すると、必要な画面が多すぎて、ユーザーが混乱する可能性があります。
アプリケーションにいくつかのオプションしかない場合や、ユーザーが定期的に変更する可能性のあるオプションがある場合は、設定アプリケーションが適切な場所であるかどうかを慎重に検討する必要があります。たとえば、ユーティリティ アプリケーションは、メイン ビューの背面にカスタム構成オプションを提供します。ビュー上の特別なコントロールがそれをひっくり返してオプションを表示し、別のコントロールがビューをひっくり返します。単純なアプリケーションの場合、このタイプの動作は、アプリケーションのオプションへの即時アクセスを提供し、[設定] に移動するよりもユーザーにとってはるかに便利です。
アップデート
リンクの有効期限が切れています。これは、設定バンドルに関する同様のドキュメントです。
iOS5 の場合、設定を直接開くことができます。
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"prefs://"]];
私自身の質問に答えました: システム設定と統合しなくても、NSUserDefaults を使用して独自のアプリケーション設定を保存できます。
たとえば、私のアプリは、FlipSide (ユーザーが「i」ボタンを押したときに表示されるビュー) のいくつかの設定用の小さな UI を備えたユーティリティ アプリです。
この情報は 2 つの情報源から見つけたことに注意してください。
iPhone BootCamp からの素晴らしい一連のレポートの中で、Scott Leberknight は、アプリケーションのユーザーの既定値が設定アプリに統合される場合と統合されない場合があることを教わったと述べています。
BubbleLevel の iphone 公式開発者ページのサンプル コードでは、レベルのキャリブレーションを保存するための設定を使用します (これはフリップサイド ビューで設定されます)。
以下は、アプリケーションの起動時に設定を読み込み、終了時に保存する LevelAppDelegate.m のメソッドです。
// Invoked after the application has been launched and initialized but before it has received its first event.
- (void)applicationDidFinishLaunching:(UIApplication *)application {
// Set up the level view controller
levelViewController = [[LevelViewController alloc] init];
[window addSubview:levelViewController.view];
// Restore calibration for device
float restoredOffset = [[NSUserDefaults standardUserDefaults] floatForKey:BubbleLevelCalibrationOffsetKey];
levelViewController.calibrationOffset = restoredOffset;
}
// Invoked immediately before the application terminates.
- (void)applicationWillTerminate:(UIApplication *)application {
float calibrationOffset = levelViewController.calibrationOffset;
NSNumber *offset = [NSNumber numberWithFloat:calibrationOffset];
[[NSUserDefaults standardUserDefaults] setObject:offset forKey:BubbleLevelCalibrationOffsetKey];
}
ただし、元の質問に対する適切な答えは次のとおりだと思います。
いいえ、独自のアプリから設定 UI を起動することはできません (これを行う方法は見たことがありません。間違っている可能性があると思いますが、アプリから設定を起動できたとしても、 URL を使用して Safari を起動する方法 -設定アプリからアプリに戻ることができず、目的が無効になります)。
設定レベルの永続化 (ドキュメント、データベース、またはキャッシュに永続化されたアプリ データとは対照的に) には、2 つの選択肢があります。i) 編集にシステム設定アプリを使用します。ii) アプリで独自のコントロールを作成します。
どちらの場合でも、実際の永続化には NSUserDefaults を使用できます。
アプリから Settings.app を起動する方法を知りません。ただし、設定をアプリに直接統合してみませんか? InAppSettingsKitを使用すると、非常に簡単に行うことができます。
Aka-aki アプリが設定アプリのプッシュ通知画面に直接移動するのを見たところです。これは、私が最初に起動したときに実行されました。だからそれは可能でなければなりません。:)
いいえ、できません。アプリを終了して設定を起動する必要があります。それは苦痛であり、上で述べたように、設計上の決定を下す必要があります。