久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

iOS?APP?Scheme相關(guān)

 ccccshq 2014-04-09

一直都有接觸要設(shè)置app的url scheme,,從最早的facebook開始,。
當(dāng)時(shí)的理解是SSO用的,當(dāng)授權(quán)成功之后,,facebook app或者safari可以利用給定的url scheme來回調(diào)程序,。按照Facebook dev頁(yè)的指南,在Info.plist中加入url scheme,。


如何在info.plist中加入url scheme

直接將info.plist用源碼打開,,加入如下代碼:

<key>CFBundleURLTypes</key>
   <array>
       <dict>
           <key>CFBundleURLName</key>
           <string>com.xxxx.xxxx</string>
           <key>CFBundleURLSchemes</key>
           <array>
               <string>yourURLScheme</string>
           </array>
       </dict>
   </array>

當(dāng)然也可以在xCode中加入U(xiǎn)RL Type的row,不過遇到過xCode不自動(dòng)提示補(bǔ)全,,自己寫的話,,會(huì)無(wú)效,所以還是比較信任源碼~

直接在xCode中操作添加URL Types

再后來xCode的工程屬性Info頁(yè)簽下面有專門的URL Types條目添加URL Types,,在Identifier中填入BundleID,,URL Schemes中填入對(duì)應(yīng)的Scheme。


Scheme的作用在之前facebook的使用中已經(jīng)領(lǐng)悟了一部分,,但是還有其他強(qiáng)大的功能,,比如你想要在iOS設(shè)備的safari中輸入一個(gè)URL(后面你會(huì)知道,就是你自己定義的URL Schemes)就能直接打開你的設(shè)備,,就和啟動(dòng)眾多系統(tǒng)應(yīng)用一樣?。]錯(cuò),,你的DIAO絲程序也能像掛著蘋果老爹光環(huán)的“高帥富”應(yīng)用一樣啟動(dòng),。
系統(tǒng)URL Schemes

Stock
Some of these URL schemes doesn't work anymore in the latest iOS. Let's hope they get reintroduced.

itms-apps:// – Open the App Store
maps:// – Open the Maps app
sms:// – Open the compose window of the Messages app
music:// – Go to the currently playing song in the Music app
youtube:// – Open the YouTube app
itms-books:// – Open the iBooks app
facetime://
prefs:root=General&path=Bluetooth
prefs:root=General&path=AUTOLOCKS
prefs:root=NOTIFICATIONS_ID
prefs:root=General&path=USAGE
prefs:root=General&path=Bluetooth
prefs:root=AIRPLANE_MODE
prefs:root=Brightness
prefs:root=Wallpaper
prefs:root=INTERNET_TETHERING
prefs:root=CASTLE
prefs:root=CASTLE&path=STORAGE_AND_BA
prefs:root=General&path=About
prefs:root=General&path=USAGE/CELLULAR_USAGE
prefs:root=MUSIC&path=EQ
prefs:root=General&path=Network
prefs:root=LOCATION_SERVICES
prefs:root=Phone&path=CallerID
prefs:root=Phone&path=CallForwarding
prefs:root=Safari
prefs:root=General&path=Assistant
prefs:root=General&path=Keyboard
prefs:root=Sounds
prefs:root=General&path=Network/VPN
prefs:root=WIFI


想要實(shí)現(xiàn)上面的功能,在應(yīng)用中僅僅加入scheme是不夠的,,還需要針對(duì)該scheme做對(duì)應(yīng)的處理,,有點(diǎn)類似廣播通訊的原理,輸入scheme后發(fā)出廣播,,你需要寫接收該廣播以及處理的代碼,。

  1. 不要實(shí)現(xiàn)applicationDidFinishLaunching:方法
  2. 實(shí)現(xiàn)application:didFinishLaunchingWithOptions:方法,并在其中檢查url,,如果能處理該url則返回YES,,否則不做處理返回NO,。
  3. 實(shí)現(xiàn)application:handleOpenURL:,處理url,,成功返回YES,,否則返回NO。

在iOS4中,,URL分以下兩種方式傳入app中

  1. 如果是啟動(dòng)程序,,則application:didFinishLaunchingWithOptions:被執(zhí)行,返回YES當(dāng)且僅當(dāng)application:handleOpenURL:執(zhí)行返回YES,。
  2. 如果程序由后臺(tái)掛起變?yōu)榛顒?dòng),則application:didFinishLaunchingWithOptions:不會(huì)被執(zhí)行,,但是application:handleOpenURL:會(huì)被執(zhí)行,。

處理代碼如下:

- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url {
   NSLog(@"%@", [url absoluteString]);
   if ([[url host] isEqualToString:@"yourURLScheme"]) {
       return YES;
   }
   return NO;
}

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
   ...
   NSURL *url = (NSURL *)[launchOptions valueForKey:UIApplicationLaunchOptionsURLKey];
   if ([self application:application handleOpenURL:url]) {
       return YES;
   }
   return NO;
} // End of application:didFinishLaunchingWithOptions:

注意:

在iOS4.2之后,application:handleOpenURL:將被DEPRECATED
可以使用

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

sourceApplication
The bundle ID of the application that is requesting your application to open the URL (url).

sourceApplication即為調(diào)用者發(fā)送給接收者的Bundle ID,,比如MobileSafari就是com.apple.mobilesafari

annotation
A property-list object supplied by the source application to communicate information to the receiving application.

調(diào)用者發(fā)給接收者的plist對(duì)象


如果該程序沒有被安裝,,那么在Safari中打開我們希望能跳轉(zhuǎn)到下載界面。需要實(shí)現(xiàn)這個(gè)功能,,我們可以利用JS的window.location和setTimeout函數(shù),。

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www./TR/html4/strict.dtd">
<html>
<body>
<script>
window.location = "URL Scheme:";
setTimeoutfunction(){ window.location="http://App Store地址";   } , 1500);
</script>
</body>
</html>

將該代碼保存為index.html,放于網(wǎng)站上,,利用Safari打開該文件,,則可以實(shí)現(xiàn)如果安裝了該應(yīng)用,則打開,,否則能夠直接跳轉(zhuǎn)到App Store的App下載頁(yè)面,。

注意

JS中的URL Scheme不要包含非轉(zhuǎn)義字符,比如'-./'等,,如果有非轉(zhuǎn)義字符則需要轉(zhuǎn)義后輸入到Safari,,直接在Safari中輸入U(xiǎn)RL Scheme打開應(yīng)用,如果提示

Safari打不開該網(wǎng)頁(yè),,因?yàn)檫@是一個(gè)本地文件

那么很有可能因?yàn)槟愕腢RL Scheme中包含了非轉(zhuǎn)義字符,,最好全為英文字母數(shù)字最好。


代碼如何調(diào)用

     NSURL *url = [NSURL URLWithString:@"URL Scheme://"];
[[UIApplication sharedApplication] openURL:url];

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購(gòu)買等信息,,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請(qǐng)點(diǎn)擊一鍵舉報(bào),。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多