アプリで指定された ViewController に移動する必要があります。Info.plistを編集したので、Safariでscheme://と入力すると、rootViewControllerに問題なくアクセスできます。私もこれに出くわしました:
https://stackoverflow.com/a/10925872/1327809
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url {
MyViewController *controller = [[MyViewController alloc] initWithNibName:@"MyViewController" bundle:[NSBundle mainBundle]];
[self.viewController presentModalViewController:controller animated:YES];
[controller release];
return YES;
}
これはまさに私が 1 つの問題でやりたいことです。私はRubyMotion(私は初めてです)を使用する必要があるため、nibファイルさえありません。
def application( application, handleOpenURL:url )
// desired code
end
ご協力ありがとうございます。さらに情報が必要な場合はお知らせください。
2012 年 6 月 14 日更新 handOpenURL
メソッドが非推奨であることがわかったので、現在はその代わりに使用しています。
黒い画面が表示される理由を一生理解できないため、コードを含めました。私はcontroller.rbからif/elseを削除し、Safariを介して、またはアプリを直接クリックして、Safariを介して、それがまだ黒だったとしても、最初のView Controllerを実行しました。これが新しい質問である必要がある場合は、お知らせください。新しい質問を開始します。
didFinishLaunchingWithOptions と openURL の両方が workFlowController メソッドを通過する必要があります。このメソッドは、controller.rb に送信し、メソッド viewWillAppear を実行します。URL を持つことで、どのビュー コントローラーが実行されるかが決まります。
app_delegate.rb に正しくコーディングされていないと思います。以下でコメントしたこと以外に、新しい openURL メソッドのコードがどのように異なるべきかわかりません。rake デバイスを実行したときにコンソールでログ (問題のメソッド内で log と puts を使用) を表示する方法はありますか? アプリを完全に終了し、Safari 経由で戻ろうとしたときにもログに記録する必要があります。Apple ドキュメントによると、「別のアプリケーションが URL リソースを開くように要求した結果としてアプリケーションが起動された場合、最初に UIApplicationアプリケーションに application:didFinishLaunchingWithOptions: メッセージを送信してから、このメソッドを呼び出します。」アプリが実行されていないときにアプリでこれが発生するかどうかを確認したいのですが、URL 経由で開きます。
どんなフィードバックでも大歓迎です。改めまして、ここまでお世話になりました。私も引き続き探します。
app_delegate.rb
class AppDelegate
...
def application( application, didFinishLaunchingWithOptions: launchOptions )
...
@window.rootViewController = self.workFlowController
...
true
end
def application( application, openURL: url, sourceApplication: sourceApplication, annotation: annotation )
if sourceApplication !=nil
#should I now be using this instead of from_open_url?
end
...
@window.rootViewController = self.WorkFlowController
@window.rootViewController.from_open_url = true
...
true
end
def workFlowController
@_workFlowController ||= begin
wfController = Auth::Controller.alloc.init
wfController.delegate = self
# return wf controller
wfController
end
end
...
end
controller.rb
module Auth
class Controller < BaseController
...
attr_accessor :delegate, :from_open_url
...
def viewWillAppear( animated )
super
# app loads from URL, password reset controller loads first
if (@from_open_url)
self.presentViewController(
self.urlController,
animated: false
)
else
self.presentViewController(
self.otherController,
animated: false
)
end
end
...
end
end