1

私はアプリでカスタムURLスキームの処理に取り組んでおり、次のことを整理しようとしています。

- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url

アプリのNSDictionaryにURLを渡して正常に解析していますが、「今は何ですか?」handleOpenURLBOOLを返しますが、何に?デバイスが起動したときにデバッガーをデバイスで実行する方法がわからないため、デバッグが困難です。

私が知っているのは、それがapplicationDidFinishLaunching前に完了し、画面にhandleOpenURL表示されているように見えることだけです。rootViewController

- (void)applicationDidFinishLaunching:(UIApplication *)application {
    // Load data
    [self initializeData]; 
    // Configure and show the window
    [window addSubview:[navigationController view]];    
    [window makeKeyAndVisible];
}

とにかく、これでappDelegateにこのNSDictionaryオブジェクトができました。詳細ビューで何かを実行できるように、rootViewControllerにどのように渡しますか?電話しますか

[[navigationController topViewController] addItemWithDictionary:theDictionary];

handleOpenURLの前return YES;または、appDelegateでNSDictionaryプロパティを作成してから、「ReturnYES;」の後に作成する必要があります。私からそれを取得しますrootViewController(またはdetailViewController-まだどちらが解決されていません)。もしそうなら、トリガーは何ですか?handleOpenUrlのリターンがどこに向かっているのか、そしてもしあれば、それらが私にとってどのような価値を持っているのかは私にはわかりません。

ありがとう!

4

3 に答える 3

1

didFinishLaunchingWithOptions に関するこちらの提案をご覧ください。

http://www.iphonedevsdk.com/forum/iphone-sdk-development/31742-handleopenurl-not-called.html

私がデータを渡すために使用したいくつかのアプローチがあり、条件に応じてそれらを混同します。

  1. 通過を心配する必要がないように、グローバルを維持してください。

  2. オブザーバー パターンを使用して、通知メッセージ センターを使用して通知オブジェクトを使用してデータを登録/投稿します。

  3. URL を NSUserDefaults に保存します (これも辞書ですが、管理する必要はありません)。

最近、UIWebView で同様の処理を行う必要があり、いくつかの URL データをフィルタリングする必要がありました。NSURL で WebViewCache と setSharedCache をサブクラス化する必要がありました。shouldStartLoadWithRequest でデータを取得することで、これがあなたの問題にも当てはまると強く思います。

于 2010-01-23T02:53:49.700 に答える
1

他のアプリやモバイル サファリ (ジェイルブレイクされていないデバイス) から openurl をデバッグするための便利なヒントは、UIApplication をサブクラス化し、いくつかの文書化されていないメソッドをオーバーライドすることです。申し訳ありませんが、名前を覚えていませんが、ericasadun.com でそれらを掘り下げることができます。名前はかなりのものになります。明らか。

xcodeを介してアプリを起動し、ホームスプリングボードをヒットしても、プロセスはxcode(afaik)によって開始されたため、プロセスを強制終了しないため、デバッガーに接続したまま他のアプリを起動してopenurlを呼び出すことができます。

于 2010-01-23T10:59:23.753 に答える
0

私は自分の質問に答えたかもしれませんが、他のアイデアがあれば聞いてみたいです!

handleOpenURL で処理を続行し、辞書をオブジェクトに変換してから、rootViewController がテーブル ビューを構築するために使用している appDelegate の配列に追加する必要があると思います。明らかに、配列を自動入力する前に、ユーザー側でいくつかの検証と確認を行う必要があります。それは handleOpenURL の範囲内でも起こると思いますか?

于 2010-01-23T02:53:20.103 に答える