2011-04-14 64 views
1

我寫了兩個應用程序,我需要它們之間的交互。我的意思是,在第一個應用程序中,有一個視圖,您需要添加一個數字。但如果你不想寫下來,另一個應用程序會爲你生成它。所以我需要第二個應用生成的數字,並用它填充視圖。Objective C從另一個應用程序中檢索數據

我讀了很多關於這個主題,我知道我必須使用自定義URL方案。關於這個的好文章例如:link。所以,如果我明白,我需要確定的方案是這樣的:

在第一個應用程序:

  • URL標識: com.mycompany.myfirstapp
  • URL方案的第一個項目:myFirstApp

在第二應用程式:

  • URL標識符: 個com.mycompany.mysecondapp
  • URL方案的第一個項目:mySecondApp

然後在第一個應用程序,例如在按鈕的IBAction爲:

[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"mySecondApp://pleaseGenerateNumber"]]; 

在第二個應用程序,我要實現所述

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 

方法和

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

方法。然後解析URL,並進行數字生成。但問題在這裏。我怎樣才能向第一個應用程序「告訴」第一個應用程序生成的數字?我必須再次使用openURL,並通過URL檢索號碼?

+1

@Andreas:[cocoa]標記用於Mac OS X.對於iOS,請使用[cocoa-touch]。 – 2011-04-14 13:18:33

+0

@Bavarious:沒有看到問題中提到的ios(僅)。它適用於兩者,所以添加兩個標籤?另外:刪除Objective-C標籤? API不是「嚴格」的語言綁定?! – Andreas 2011-04-14 15:00:22

+2

@Andreas我同意,有時答案適用於這兩個平臺。但在這種情況下,'UIApplication'絕對是iOS,Mac OS X中的進程間/應用程序間通信允許一系列不適用於iOS的不同答案。 – 2011-04-14 21:32:02

回答

1

可用在iOS4.2的,使用一種方案,從一個應用程序的數據傳遞給另一個可以使用UIApplicationDelegate協議方法

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url 
     sourceApplication:(NSString *)sourceApplication 
     annotation:(id)annotation 

從文檔,annotation是:

一個屬性 - 由源應用程序提供的列表對象,用於將信息傳遞給接收應用程序。

編輯:事實證明,您可以使用iOS 3.2下的註釋; application:DidFinishLaunchingWithOptions:允許選項字典中的註釋鍵。

0

爲了獲得最大的兼容性(iOS 3+),是的,您必須再次使用openURL,將數字作爲URL參數傳回。爲了重複利用系統提供的URL解析代碼,請確保您的URL格式如下HTTP模板:

模式://還挺主機/還挺-路徑參數

考慮使用還挺主機的命令代碼並將數據作爲路徑和/或參數傳遞;這樣你可以擴展你的通信協議而不需要引入額外的URL方案。

是的,這是醜陋的。這就是iOS。

相關問題