我正在开发一个必须以这种方式与另一个应用相关的应用:
第一个应用程序有一个按钮,通过URL方案打开第二个应用程序并传递两个参数(用户和密码)。
第二个应用验证这些参数,并在他们确定的时候提供访问权限。
如果第二个应用程序没有打开,系统运行良好,但是如果第二个应用程序已经打开(在后台)并且是从具有不同用户和密码的第一个应用程序调用的,则不起作用(URL Scheme方法)在AppDelegate中,当然只调用一次。
有没有办法让第二个应用程序获得新的参数甚至已经打开?
谢谢。
答案 0 :(得分:3)
当您的第二个应用被另一个应用调用时,有 2 个案例。
在这两种情况下,您的第二个应用会收到NSURL
个对象。
您必须在AppDelegate.m
中实施2方法(此处#1 ,此处#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
}
答案 1 :(得分:1)
在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和 相应地更新其用户界面。如果您的应用程序必须启动 要打开URL,应用程序会调用 应用程序:willFinishLaunchingWithOptions:和 application:didFinishLaunchingWithOptions:方法首先,然后是 这种方法。这些方法的返回值可用于防止 这种方法被称为。 (如果该应用已经在运行,则仅限 这个方法叫做。)