我发展必须以这种方式与其他应用程序的应用程序:URL方案
第一应用有一个按钮,通过一个URL方案,将打开第二个应用程序并传递两个参数(用户和密码)。
第二个应用程序验证这些参数,并提供访问权限,如果他们是好的。
这个制度运作良好,如果第二个应用程序无法打开,但如果第二个应用程序已经打开(背景),并从不同的用户名和密码的第一个应用程序调用,不工作(网址当然,AppDelegate中的Scheme方法只被调用一次)。
有什么办法可以让第二个应用程序获得新的参数甚至已经打开?
谢谢。
我发展必须以这种方式与其他应用程序的应用程序:URL方案
第一应用有一个按钮,通过一个URL方案,将打开第二个应用程序并传递两个参数(用户和密码)。
第二个应用程序验证这些参数,并提供访问权限,如果他们是好的。
这个制度运作良好,如果第二个应用程序无法打开,但如果第二个应用程序已经打开(背景),并从不同的用户名和密码的第一个应用程序调用,不工作(网址当然,AppDelegate中的Scheme方法只被调用一次)。
有什么办法可以让第二个应用程序获得新的参数甚至已经打开?
谢谢。
有案件当你的第二个应用程序被另一个应用程序调用。
在这两种情况下,您的第二个应用将收到一个NSURL
对象。
您必须实现2方法在AppDelegate.m
(HERE#1,HERE#2)
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
//.......
//.......
NSURL *url = launchOptions[UIApplicationLaunchOptionsURLKey];
if (url)
{
//OK, it means that app is being called via URL Schema
//..... HERE #1
}
//.......
//.......
}
- (BOOL)application:(UIApplication *)application
openURL:(NSURL *)url
sourceApplication:(NSString *)sourceApplication
annotation:(id)annotation
{
//............... HERE #2
}
在UIApplicationDelegate有
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
Asks the delegate to open a resource identified by URL.
根据该文档,该方法后应用程序调用中:didFinishLaunchingWithOptions:当后者方法返回YES。如果你的应用程序已经打开,只有这个方法被调用。
此方法的实施应该打开指定的URL并且 相应地更新其用户界面。如果您的应用必须启动 才能打开网址,应用程序将调用 应用程序:willFinishLaunchingWithOptions:和 应用程序:didFinishLaunchingWithOptions:方法优先,然后是 此方法。这些方法的返回值可用于防止调用此方法。 (如果应用程序已经在运行,只有 该方法被调用。)
谢谢,它的工作原理就像一个魅力。 – RFG