iOS 應用直接呼叫

2021-06-26 21:38:27 字數 4526 閱讀 7024

1)在plist檔案中,註冊對外介面

滑鼠右擊information property list ,然後從列表中選擇url types 

右擊 add row 新增乙個物件(item)右擊item add row  

從列表中選擇 url  schemes 再右擊新增乙個物件(item1)

plist如下圖所示:

2)呼叫方法

在你需要呼叫上面註冊過對外介面的應用中,新增下面**即可:

通過上述兩個步驟,你可以在你的應用中,讓使用者開啟你的其它應用

二、呼叫其它應用的方法

1)呼叫 自帶mail


2)呼叫 **phone


3)呼叫 sms

4)呼叫自帶 瀏覽器 safari

5)呼叫 remote

上面是最基本的語句,沒什麼處理過程。

如:呼叫phone可以傳遞號碼,呼叫sms只能設定號碼,不能初始化sms內容。

如果乙個應用程式支援一些已知型別的url,您就可以通過對應的url模式和該程式進行通訊。然而,在大多數情況下,url只是用於簡單地啟動乙個應用程式並顯示一些和呼叫方有關的資訊。舉例來說,對於乙個用於管理位址資訊的應用程式,您就可以在傳送給它的url中包含乙個maps程式可以處理的位址,以便顯示相應的位置。這個級別的通訊為使用者創造乙個整合度高得多的環境,減少應用程式重新實現裝置上其它程式已經實現的功能的必要性。

方法。openurl:方法會啟動註冊接收該url型別的應用程式,並將url傳給它。當使用者最終退出該應用程式時,系統通常會重新啟動您的應用程式,但並不總是這樣。系統會考慮使用者在url處理程式中的動作及在使用者看來返回您的應用程式是否合理,然後做出決定。

下面的**片斷展示了乙個程式如何請求另乙個程式提供的服務(假定這個例子中的「todolist」是由應用程式註冊的定製模式):

nsurl *myurl = [nsurl urlwithstring:@"todolist:"];
如果您的url型別包含的模式和蘋果定義的一樣,則啟動的是蘋果提供的程式,而不是您的程式。如果有多個第三方的應用程式註冊處理同樣的url模式,則該型別的url由哪個程式處理是沒有定義的。 。

您可以為自己的應用程式註冊包含定製模式的url型別。定製的url模式是第三方應用程式和其它程式及系統進行互動的機制。通過定製的url模式,應用程式可以將自己的服務提供給其它程式。

註冊定製的url模式

部分中介紹過這個屬性了。cfbundleurltypes屬性是應用程式的info.plist檔案中的乙個字典陣列,每個字典負責定義乙個應用程式支援的url型別。表1-6描述了cfbundleurltypes字典的鍵和值。

表1-6cfbundleurltypes屬性的鍵和值 鍵

cfbundleurlname

這是個字串,表示url型別的抽象名。為了確保其唯一性,建議您使用反向dns風格的標識,比如com.acme.myscheme

這裡提供的url型別名是乙個指向本地化字串的鍵,該字串位於本地化語言包子目錄中的infoplist.strings檔案中。本地化字串是人類可識別的url型別名稱,用相應的語言來表示。

cfbundleurlschemes

這是個url模式的陣列,表示歸屬於這個url型別的url。每個模式都是乙個字串。屬於指定url型別的url都帶有它們的模式元件。

圖1-7顯示了乙個正在用內建的xcode編輯器編輯的info.plist檔案。在這個圖中,左列中的url型別入口相當於您直接加入到info.plist檔案的cfbundleurltypes鍵。類似地,「url identifier」和「url schemes」入口相當於cfbundleurlnamecfbundleurlschemes鍵。

圖1-7info.plist檔案中定義乙個定製的url模式

您在對cfbundleurltypes屬性進行定義,從而註冊帶有定製模式的url型別之後,可以通過下面的方式來進行測試:

連編、安裝、和執行您的應用程式。

回到home螢幕,啟動safari(在iphone**器上,在選單上選擇hardware > home命令就可以回到home螢幕)。

在safari的位址列中,鍵入使用定製模式的url。

訊息。處理url請求

中實現這個方法。

物件表示的是cocoa touch框架中的url。nsurl遵循rfc 1808規範,該類中包含一些方法,用於返回rfc 1808定義的各個url要素,包括使用者名稱、密碼、請求、片斷、和引數字串。與您註冊的定製模式相對應的「協議」可以使用這些url要素來傳遞各種資訊。

在程式清單1-2顯示的

程式清單1-2處理基於定製模式的url請求

if ([[url scheme] isequaltostring:@"todolist"])

taskname = [taskname stringbyreplacingpercentescapesusingencoding:nsutf8stringencoding];

item.todotask = taskname;

nsstring *datestring = [url fragment];

if (!datestring || [datestring isequaltostring:@"today"])  else

// format: yyyymmddhhmm (24-hour clock)

nsstring *curstr = [datestring substringwithrange:nsmakerange(0, 4)];

nsinteger yeardigit = [curstr integervalue];

curstr = [datestring substringwithrange:nsmakerange(4, 2)];

nsinteger monthdigit = [curstr integervalue];

curstr = [datestring substringwithrange:nsmakerange(6, 2)];

nsinteger daydigit = [curstr integervalue];

curstr = [datestring substringwithrange:nsmakerange(8, 2)];

nsinteger hourdigit = [curstr integervalue];

curstr = [datestring substringwithrange:nsmakerange(10, 2)];

nsinteger minutedigit = [curstr integervalue];

nsdatecomponents *datecomps = [[nsdatecomponents alloc] init];

[datecomps setyear:yeardigit];

[datecomps setmonth:monthdigit];

[datecomps setday:daydigit];

[datecomps sethour:hourdigit];

[datecomps setminute:minutedigit];

nscalendar *calendar = [nscalendar currentcalendar];

nsdate *itemdate = [calendar datefromcomponents:datecomps];

if (!itemdate)

item.datedue = itemdate;

[datecomps release];

}

[(nsmutablearray *)self.list addobject:item];

[item release];

return yes;

}

return no;

}

iOS 應用直接跳轉到App Store

目前是有兩種方法實現跳 一種是直接通過openurl 的方法跳轉進入,另一種是通過蘋果自身的skstoreproductviewcontroller 該控制器去實現,第一種 第二種 需要新增storekit.framework系統庫 實現skstoreproductviewcontrollerdel...

IOS 應用之間呼叫

1 在plist檔案中,註冊對外介面 滑鼠右擊information property list 然後從列表中選擇url types 右擊 add row 新增乙個物件 item 右擊item add row 從列表中選擇 url schemes 再右擊新增乙個物件 item1 plist如下圖所示...

iOS呼叫其他應用 的寫法

一 呼叫系統應用 1 呼叫其它應用的方法 1 呼叫 自帶mail 2 呼叫 phone 3 呼叫 sms 4 呼叫自帶 瀏覽器 safari 5 呼叫 remote 二 呼叫自己開發的應用 1 在plist檔案中,註冊對外介面 滑鼠右擊information property list 然後從列表中...