zoukankan      html  css  js  c++  java
  • iPhone应用程序间传递数据

      前一篇简单的介绍了iPhone应用程序间通信,主要是通过在被调用应用的Info.plist中加入URL方案,在应用中通过openUrl来实现程序的调用。而应用程序间的数据传递则可以更具url来实现,例如我要在test应用中输入一个参数,将其传递给URLSchemeDemo中。则可以按照下面方法实现:

     NSString *temp = [NSString stringWithFormat:@"URLSchemeDemoapp:message=%@",self.message.text];
    NSURL *url = [NSURL URLWithString:temp];
    [[UIApplication sharedApplication] openURL:url];

    message.text为输入的数据,URLSchemeDemoapp为被调用程序URLSchemeDemo的URL方案。

      接下来就是URLSchemeDemo怎么来接受这个参数了,在UIApplicationDelegate中的

    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions方法中,参数字典launchOptions包含了调用该函数的应用名称(UIApplicationLaunchOptionsSourceApplicationKey)和URL(UIApplicationLaunchOptionsURLKey)。该方法实现如下:

    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
    {
    self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
    // Override point for customization after application launch.
    self.viewController = [[[ViewController alloc] initWithNibName:@"ViewController" bundle:nil] autorelease];
    self.window.rootViewController = self.viewController;
    [self.window makeKeyAndVisible];

    //处理应用程序间信息共享
    if (launchOptions) {
    NSString *sourceApp = [launchOptions objectForKey:UIApplicationLaunchOptionsSourceApplicationKey];
    NSURL *url = [launchOptions objectForKey:UIApplicationLaunchOptionsURLKey];
    NSString *msg = [NSString stringWithFormat:@"sourceApp:%@,url:%@",sourceApp,url];
    self.viewController.message.text = msg;
    }



    return YES;
    }

    先判断是否被调用,如果被调用,则将调用程序的标识符和调用的URL输出来。

    程序效果如下:

    test应用


    URLSchemeDemo应用

    在test中输入参数,这里是123,并且点击调用按钮。

    名称和路径传输成功。

       但是在didFinishLaunchingWithOptions来获取url有一个弊病,就是程序只能调用一个第二次调用时参数变了输入的信息也不会改变,这是因为didFinishLaunchingWithOptions只是在程序完成运行的时候调用。那用UIApplicationDelegate的- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url就能很好的解决这个问题,该函数在每次其他应用通过url来调用该应用时被调用,参数即为url,那么,通过这种方式来调用就更方便了。

    /*
    *响应其他应用程序通过URL方案来调用该程序时的方法
    */
    - (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url{

    self.viewController.message.text = [NSString stringWithFormat:@"%@",url];

    return YES;
    }



  • 相关阅读:
    PhoneApplicationPage 之观察 触摸事件 GIS
    读书笔记 之 image GIS
    button 样式 GIS
    TextBlock GIS
    textgame GIS
    c#对List或ListArray或string组数 用linq进行分组统计
    彗星撞地球 怀念下Warez组织的经典力作(15G动画压缩成64Kb的那个)
    .NET Framework各版本独立下载.NET Framework 3.5下载.NET Framework 2.0下载
    asp.net 导出excel 表之后 按钮 页面控件失效不可用,没反应的解决办法。
    SQL Sever 各版本下载 SQL Server 2012下载SQL Server 2008下载SQL Server 2005 下载SQL Server 2000 下载
  • 原文地址:https://www.cnblogs.com/foxmin/p/2405067.html
Copyright © 2011-2022 走看看