URL Scheme程式之間相互呼叫傳值

2021-07-03 12:17:00 字數 2720 閱讀 6665

在ios程式間通訊,可以通過url scheme,判斷是否安裝了另外的應用,開啟特定 url 的方式來傳遞引數給

另乙個程式。例如:在程式a(receiver)的info.plist中加入你需要註冊的url scheme,然後在你的應用程式b中

加入處理這類請求的**,從而實現在b程式中呼叫a程式,判斷a程式是否安裝,跳到安裝介面,傳遞引數給a程式。

具體操作如下:

在程式a中:

在info.plist中,增加乙個字段,名稱為(url types),xcode會自動為你建立乙個必須的鍵:

然後在url types這個鍵下增加乙個子項:(url schemes),這裡填入你想註冊的url scheme的名稱,

如:cloud,

你可以增加多個url scheme。

在程式b中:

/* for ios 4.1 and earlier */-(

bool)(

*)handleopenurl:

(nsurl*)

url/* for ios 4.2 and later */-(

bool)(

*)openurl:

(nsurl*)

url

(nsstring*)

annotation:(id

)annotation

也可以在其它類中新增單獨的方法處理

nsstring

*urlencodedtext = @"傳遞的內容"

;//傳遞引數

/**  

url拼裝形式

url schemes :// +傳遞內容。 */

nsstring *ourpath = [@"cloud://"

nsurl *oururl = [nsurl

urlwithstring:ourpath];

//判斷程式a(receiver)是否已經安裝

uialertview

*alertview = [[

uialertviewalloc] initwithtitle:

@"receiver found"message:

@""delegate:

nilcancelbuttontitle:

@"ok"otherbuttontitles:

nil];

alertview.tag = 101;

alertview.delegate = self;

[alertview show];

[alertview release];

}else  }

ios 預定義了如下幾種url scheme 。

mail:          mailto:[email protected]

tel:            tel:1-408-555-5555

sms:        1-408-555-1212

map:                  

youtube: 

//  viewcontroller.h

//  openprocess

#import 

@inte***ce viewcontroller : uiviewcontroller

@end

@inte***ce uidevice (processesadditions)

- (nsarray *)runningprocesses;

@end

//  viewcontroller.m

//  openprocess

#import 

#import "viewcontroller.h"

@inte***ceviewcontroller()

-(void)openprocess;

@end

@implementation viewcontroller

- (void)viewdidload 

-(void)openprocess } 

- (void)didreceivememorywarning

@end

@implementation uidevice (processesadditions)

- (nsarray *)runningprocesses ;

size_t miblen = 4;

size_t size;

int st = sysctl(mib, miblen, null, &size, null, 0);

struct

kinfo_proc * process = null;

struct

kinfo_proc * newprocess = null;

do return

nil;}

process = newprocess;

st = sysctl(mib, miblen, process, &size, null, 0);

} while (st == -1 && errno == enomem);

if (st == 0)

free(process);

return [array autorelease]; }

} }returnnil;}

@end

參考

應用程式間通訊 URL Scheme

ios 的設計思路是原則上禁止不同的應用程式之間相互訪問彼此的資料。雖然對於像我這樣的桌面應用開發人員而言,不能訪問程式以外的資料是不能想象的。但是從安全角度來說不失為乙個有效的策略。不過凡事總有例外,所以賈伯斯還是為程式間通訊開放了幾個介面。ios 上的應用程式可以通過向其它應用程式傳送乙個url...

微信外網開啟小程式(URL Scheme)

開啟小程式,只有這樣一種單一的場景。開啟方式 適用場景 場景值使用方式 備註官網鏈結 url scheme 開啟小程式 1065 location.href weixin dl business t ticket ticket由服務端介面返回 openlink 1167 需配置js介面網域名稱或雲開...

Doc View 之間相互訪問

1 在view中獲得doc指標 cyoursdidoc pdoc getdocument 乙個視只能有乙個文件。也可以 cmainframe pmain cmainframe afxgetmainwnd 3 在view中獲得mainframe指標 4 獲得view 已建立 指標 cyourview ...