網頁

顯示具有 ios 標籤的文章。 顯示所有文章
顯示具有 ios 標籤的文章。 顯示所有文章

2014年7月13日 星期日

【ios】remote Notification 小事

【環境:xCode6 , ios8 , USE ARC】

今天才知道,當你想要測試notification時,取得的device token,你必須連上網路
phone才會執行

- (void)application:(UIApplication *)app didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken
這行指令

真的是相當的令人.....



As always , if you have any question , feel free to contact me.
有任何問題,請聯絡我

歡迎轉載,請註明出處,感謝。

2014年3月25日 星期二

【iOS】針對某view進行固定方向的旋轉

【環境:xCode5.1 ios6 ios7】

xcode支持的旋轉設定如圖:


在旋轉的方向上,有多種不同的處理方法
1.
可以從application中,監聽哪些viewcontroller正在處理
若滿足某些條件
則進行device上的旋轉

2.對於從單一uviewController上,也可執行如圖,進行旋轉
可以在viewController中,看到此類地宣告。


As always , if you have any question , feel free to contact me.
有任何問題,請聯絡我

歡迎轉載,請註明出處,感謝。

2014年3月21日 星期五

【iOS】關於Prefix.pch file的那一點小事

【環境:ios】

關於Prefix.pch file這個檔案,剛剛翻了一下blog,發現竟然沒寫過
很早前就很想針對此file去特別寫一篇

prefix.pch file存在于每個objc procject環境中,android也會有
主要用來將常用的macro,至於此中


一般沒有太大意外的話,應該都是長這樣

可以看到文件中有特別針對某些項目去import


當你的project執行時,會先載入此檔案,去先行建立環境
如下圖:
可以看到我想要在每個頁面均可執行這些macro,然後利用他們的函示
我們也可將自己要檢查網路or判斷設定狀態的macro寫成一個lib然後由此嵌入,前提是我們想在大多數檔案中使用。

我們聽聽國外網友的意見:iOS Prefix.pch best practices

其他用法,可以在這邊寫入某些通用的巨集函數,如判斷裝置是否為568px or 480px
或者某些debug函數,如以下連結範例:

MY CURRENT PREFIX.PCH FILE




當然切記,沒有太大用途的,請勿胡亂一通的全塞進入,:)


As always , if you have any question , feel free to contact me.
有任何問題,請聯絡我

歡迎轉載,請註明出處,感謝。

2014年3月19日 星期三

【iOS】關於註冊開發者中心

【環境:iOS developer center】

關於註冊部分,
相信很多人,也常常搞混,希望我到現在還沒搞混,以下列為幾個重點

※註冊分為
1.Individual

2.company

之中最明顯的差別就是『D-U-N-S』的number
※『D-U-N-S』到底要不要付費(至於該如何取得,當你註冊時就會遇到)
->根據D-U-N-S的文檔可知,這是免費的。

※通常申請天數要等待幾天?
->平均申請時間為5-7天。

※而企業版的distribution:$299又是?
->這是針對in-house的用戶,通常申請上述一般$99的開發者帳號(無論個人/公司)
均有可對app store發佈app binary的功能。
至於$299,則是針對企業內部(名義上),若你想不需透過app store,release你的app,就請去申請此憑證。

※若你本來是『個人用戶』,想轉為『公司』的開發者(If I am enrolled as an individual, can I change to a company membership?)
->Yes. To convert your iOS Developer Program membership from an individual to a company, please contact us. You can make this change only if you are the founder/co-founder of the company. As part of the conversion process, you may be asked to submit business documents to verify your company's identity.



As always , if you have any question , feel free to contact me.
有任何問題,請聯絡我

歡迎轉載,請註明出處,感謝。

【iOS】array 排序

【環境:ios7】

日期、字串排序,可在array中放入各種參數比較,相關參閱說明檔
NSSortDescriptor Class Reference
 
[array sortedArrayUsingSelector:@selector(compare:)] //升冪排序

 
//降冪
NSSortDescriptor *SortDescriptor=[NSSortDescriptor sortDescriptorWithKey:Nil ascending:NO selector:@selector(compare:)];
[Array sortedArrayUsingDescriptors:[NSArray arrayWithObject:SortDescriptor]];

 
//自定
NSSortDescriptor *sortDescriptor=[[NSSortDescriptor alloc]initWithKey:@"排序名稱" ascending:isAscending];
NSArray *sortDescriptors=[NSArray arrayWithObject:sortDescriptor];
NSArray *Array=[arr sortedArrayUsingDescriptors:sortDescriptors]; 

 
//block
NSArray *sortedArray;
sortedArray = [drinkDetails sortedArrayUsingComparator:^NSComparisonResult(id a, id b) {
    NSDate *first = [(Person*)a birthDate];
    NSDate *second = [(Person*)b birthDate];
    return [first compare:second];
}];


As always , if you have any question , feel free to contact me.
有任何問題,請聯絡我

歡迎轉載,請註明出處,感謝。

2014年3月14日 星期五

【ios】status bar hidden

【環境:ios6,7】


ios6只需要以下
 
[[UIApplication sharedApplication] setStatusBarHidden:YES]; 

ios7
 
[[UIApplication sharedApplication] setStatusBarHidden:YES]; 
且在plist中設定View controller-based status bar appearance,如圖:





As always , if you have any question , feel free to contact me.
有任何問題,請聯絡我

歡迎轉載,請註明出處,感謝。

2014年3月12日 星期三

【iOS】Cannot install applications because the certificate is not valid

【環境:OTA】

最近重新架設OTA,發生了如圖,的慘狀
一開始我還以為我哪個xcode中的憑證弄錯,重新搞了好久,畢竟以前也沒碰過這個問題
稍微survey一下,原來ios7以上的版本,必須透過安裝server ssl憑證,才可以下載。

所以我回到ios6以下的幾種,果然可以正常安裝
且利用https,在ios6以下並沒辦法安裝

基本上,只需將以下改掉即可
itms-services://?action=download-manifest&url=https://yourdomain.com/manifest.plist
plist中無需更改,聽說是因為apple更改了manifest.plist的權限,只能用https授權過的ssl才可下載安裝,故若你的domain name要可使用OTA的服務,就請去申請安裝ssl憑證吧....
這點我也在try.....

所以....自己在server建立的自我憑證...這是不夠的
https://twitter.com/renderplace/status/426754821044338689
會發生如下圖:



而聽說透過dropbox的免費網頁服務,可以作為暫時之計。

使用方法:(其實只需將plist放至dropbox即可,只是我想都放在一起)
1.將你的plist放至dropbox。
2.對ipa按右鍵,取得分享連結,像此:www.dropbox.com/y/20i6qogfvim7tcy/xxx.ipa
3.將www.dropbox.com改為dl.dropboxusercontent.com
3.開啟你的plist,更改下載的位置如上,也可順便用https傳輸。
4.上傳plist,並取得你plist的分享link,像:www.dropbox.com/c/20i6qogfvim7tcy/xxx.plist
5.將www.dropbox.com改為dl.dropboxusercontent.com
6.回itms-services://?action=download-manifest&url=https://dl.dropboxusercontent.com/a/20i6qogfvim7tcy/xxx.plist


聽說許多國外的開發者,針對這點,有所不滿,畢竟apple每次動這些東西似乎都不會特別提醒...畢竟我也意外被打鎗許多次....

而我也試圖去developer center尋找相關文擋,似乎OTA的部分dis,已經被移除。

下次來寫安裝ssl的流程。



As always , if you have any question , feel free to contact me.
有任何問題,請聯絡我

歡迎轉載,請註明出處,感謝。

2014年3月4日 星期二

【iOS】XCode cannot run using the selected device. Choose a destination with a supported architecture in order to run on this device.

【環境:xCode 5.0.2】

把舊的code拿出來compiler,出現以下錯誤


原因為objective c 需用LLVM5.0
位置在project - > build settings - > build options - > Compiler........
如下圖


As always , if you have any question , feel free to contact me.
有任何問題,請聯絡我

歡迎轉載,請註明出處,感謝。

2014年2月26日 星期三

【iOS】取得硬體設備的外殼顏色

【環境:iOS】

first
我知道取得這個數據很無聊....

but...人生就是這個but

外國網站的作者有解釋  這是一個private api...我有寫信去apple問,是否有其他解

連結為國外其他貢獻者,公開的一些關於外殼的顏色數據,可以看到ios6的顏色很單純用
black/white
ios 7則用色碼...如果你的手機是iphone5以上的幾種的話....
 
UIDevice *device = [UIDevice currentDevice];
SEL selector = NSSelectorFromString(@"deviceInfoForKey:");
if (![device respondsToSelector:selector]) {
    selector = NSSelectorFromString(@"_deviceInfoForKey:");
}
if ([device respondsToSelector:selector]) {
    NSLog(@"DeviceColor: %@ DeviceEnclosureColor: %@", [device performSelector:selector withObject:@"DeviceColor"], [device performSelector:selector withObject:@"DeviceEnclosureColor"]);
}

As always , if you have any question , feel free to contact me.
有任何問題,請聯絡我

歡迎轉載,請註明出處,感謝。

2013年11月14日 星期四

【iOS】安裝.ipa的各種方法

【環境:xCode5】
第一種:
直接將ipa給用戶,利用itunes安裝.

第二種:
 等編輯工具,直接安裝在手機上.

第三種:
利用OTA的方法,用戶用『手機』開啟.ipa下載頁面,直接安裝在手機中.

第四種:
利用mobile device management (MDM) server,利用push notification動作管理受控制的裝置,進行安裝或刪除等動作.
MDM介紹:http://www.apple.com/iphone/business/it/management.html

使用MDM的服務,需購買osx server的app在你的mac上。(osx 支援)
os x server的功能強大,這只是其中一個功能,購買安裝後,建構該osx server的憑證,上傳到此『Apple Push Notification service申請』。

注意:你必須登入你的app id,並非開發者中心,而是你在apple官網上的註冊帳號(可以用你開發者帳號去登入),該mail必須驗證過且設定一組驗證問題才可啟用。

MDM的服務,要$$$,設定相對也麻煩,但對於企業佈局,或者你有大量測試裝置上,相當有用,可以針對已對該MDM server註冊的裝置,進行更新app的行為,或者刪除。

描述檔管理程式輔助說明
部署MDM說明


=======官方資料 =======
部署應用程式有四種方式:
  • 使用 iTunes 將應用程式分配給您的使用者進行安裝。
  • 讓 IT 管理者使用“iPhone 設定工具程式”或 Apple Configurator 在裝置上安裝應用程式。
  • 將應用程式發佈到安全的網路伺服器;使用者可透過無線方式連線和執行安裝。
  • 使用 MDM 伺服器指示受管理的裝置來安裝供內部使用(若您的 MDM 伺服器支援此功能)。

As always , if you have any question , feel free to contact me.
有任何問題,請聯絡我

歡迎轉載,請註明出處,感謝。

2013年11月13日 星期三

【UDID】ios7 取得udid for win

【環境:ios7, win, iphone4s】

【UDID】ios 7 下 for mac

如題,就不再詳述,請參閱另一篇文章

方法一:iTunes

方法二:看圖應該就不陌生在哪裡找了(裝置管理員),也可以透過憑證管理去查看。




方法三:
iPhone Configuration Utility 3.6.2 for Windows



As always , if you have any question , feel free to contact me.
有任何問題,請聯絡我

歡迎轉載,請註明出處,感謝。

2013年11月6日 星期三

【Leanplum】數據追蹤,快速更新資源

【環境:Leanplum架設,適用ios,android,html5】

來源:Leanplum

此工具,是原google的測試工程師開發,可快速變更你的html,app的版型,並做數據追蹤,原意是要能在app上,快速地執行 A/B TEST 。

新聞來源:Inside



透過安裝script,利用script去更換app中,所有你設定的物件的屬性,包含圖片。
利用script將app的元件,放在雲端,透過雲端去跟script去做更新的動作。

【免費的部分】(支援付費用戶)
支援100個每日活躍的用戶數
支援1個app
線上支援

【功能】
1.追蹤設定的變數,並可及時修改該變數
2.分析app執行的報告,活躍率,並可知該用戶目前使用版本與系統,取得特定地區,特定系統地分析表,如:台灣,ios5。並可知該地區到底有無人安裝。
3.可及時實驗,並決定優化方式,了解該地區的人對於in-app purchase價格是否對味。
4.快速地發佈你的新設定。

【sdk】
iOS,android,html5

【ios安裝方式】
1.自動安裝,直接把檔案抓下來放在同一目錄即可,輸入你的mail驗證

2.手動安裝(必須登入才可看到),就是一個static lib的教學

其他的就請去體驗看看吧,安裝方式容易,也利於追蹤,如果你購買無上限的話。

As always , if you have any question , feel free to contact me.
有任何問題,請聯絡我

歡迎轉載,請註明出處,感謝。

2013年10月30日 星期三

【HRH】ios系統app避免HRH(HTTP Request Hijacking)的方法

【環境:iOS】

http://www.skycure.com/blog/http-request-hijacking/

這是一種http request的攔截技術,這門技術不算最新,只是ios app在redirect http時,因為無法看到你將被重新導向的網址,而被重新挖出來探討的技術。

這邊提出的修改方法為
1,將你的http改成https,但,若開發人員,沒有針對https坐憑證認證的話,其實沒多大用處。

2.另一種為使用該團隊用的方法。
ps:看了一下該方針,應該是避免當用戶的URI,再度被轉向時,就返回。
if (301 == [(NSHTTPURLResponse *)cachedResponse.response statusCode]) {
return;
}
但此方法,若你的轉址過於複雜,或者打個比方講,你本來就有在用轉址的服務,那就是自找麻煩吧@@

的確越來越多的科技服務,就會衍生出新的問題,打個比方:
若我打算攻擊某個網站,或者提供什麼特別訊息,或者竊取沒有加密的資料,或者導引到某個自己做的假的信用卡網站,讓用戶填寫下資料......。



As always , if you have any question , feel free to contact me.
有任何問題,請聯絡我

歡迎轉載,請註明出處,感謝。

2013年8月16日 星期五

【數據】2013年第二季 台灣行動市場數據報告

【環境:智慧型手機、平板,特殊節日分析】

此數據為vpon 2013/8/12 的數據報告,僅作參考


目前台灣用戶
android:76.1%
iphone:20.1%


Android數據
目前android主流一樣為 samsung
htc緊追在後

Android 4.x 版本已達 77%。
4.1 版本已成為主流。
4.0 Ice Cream Sandwich 較上,一季減少 10%
持有大螢幕的android的人數上升速度將近7%
平板用戶增加7%
android大螢幕的策略,對於喜愛用大螢幕遊戲的年輕人、眼睛不好的中高年齡層,繼續保有其優勢。




iOS數據
可以看到,主流果然是iphone5,4s,4
比較特別的事 ipad mini 、 ipad4 沒達到預期的效果,還是以ipad2為主流
頻果的硬體和軟體幾乎都是更新後,用戶也會持續跟進,跟android陣營差別最大的地方

而89%的用戶已經更新到ios6
剩下的ios5的用戶,大多應該是還在用iphone3gs or iphone4等用戶


台灣人行為分析
3g行動上網高達51.8%
但若之後的 4g 吃到飽取消後,不曉得是否會下降,值得觀察
如:東南亞用戶其實不流行3g等服務,加上中華電信的定點wifi服務。
但若降低了3g用戶數量,會否對 EC平台 or 一般通訊軟體的使用量會否降低,回歸成 簡訊 等行為模式,也是值得參考。


週末用戶行為分析
代表現在台灣人在週末從早上11點到晚上九點,還是以3g為主

從Android最常使用的app行為來看
社交類的還是佔大多數41%
其他類別如
使用影音、教育、娛樂、生活和新聞 App 有 55%

iphone最長使用的app行為
查詢旅遊、瀏覽影音、生活資訊和新聞媒體 App 有 63%

綜合以上兩者數據,可以發現,除了我們可以預知的『社交』類,還是佔大宗外。
其實『新聞』、『生活』、『影音』等,還是繼續佔有其他應用類別的項目。
但現在卻還未有一個最好的新聞app,畢竟各地方、個人的生活形態不太相同。
所以在建立這些app的同時,或許標準明確的區隔目標對象,如商務人士、高科技業務、一班人、設計師等...或許可以在『資訊』類,得到較大的效果。

特殊節日

數據使用量會上升,可以期待的是,現今大多app開發商,都未有依照節日給予特定的活動,跟客戶聯結,目前版主看到的只有line還有一些美食團購等app。




As always , if you have any question , feel free to contact me.
有任何問題,請聯絡我

歡迎轉載,請註明出處,感謝。

2013年8月1日 星期四

【新聞】google play下載量首度超越apple store

【來源:Apple inside , 2013/08/01】

Google Play takes top spot in downloads, but Apple's App Store still tops revenue


根據App Annie Blog所述,google play目前的下載量,已經超過apple store,但可從圖表上看出,目前app store在營收這塊,還是佔據有利的地位,或許版圖的分布,跟硬體手機的分布有異曲同工之妙。

而值得注意的是google play下載量較大的地方,分佈在Russia, China, Brazil, and India. 等地區。






As always , if you have any question , feel free to contact me.
有任何問題,請聯絡我

歡迎轉載,請註明出處,感謝。

2013年2月4日 星期一

【iAd】(二)WWDC2011 iAd的介紹 和 安裝

【環境:ios4 above】
相關聯結:PDF
說明:
此份文件主要說明基本規則:
包含:
1.如何透過iAd去推銷你的app。
2.文件中錯誤的地方為64分帳,現已改為73分帳。
3.iAd的設定,coding。ps:可參考此篇iTunes connect設定
4.iAd的各類尺寸描述,for ipad可有不同的規格(framework: ADInterstitialAd)。
5.iAd的framework有兩個:

  • ADBannerView
  • ADInterstitialAd


文件中亦包含兩者的建立方法。

你亦可以去此地方下載sample


其中ADBannerView…就是一般會看到的banner呈現方式
而ADInterstitialAd…是for ipad,無縫式的接合廣告

6.在iOS 4中:千萬不要[self.view addSubview:otherViewController.view]
(詳細請參閱PDF)


7.要注意的還有App store Review Guidelines,了解在app store上架的iAd規則。
本站中譯連結


As always , if you have any question , feel free to contact me.
有任何問題,請聯絡我

歡迎轉載,請註明出處,感謝。

【iAd】(一)介紹、iTunes connect上的基本設定

【環境:ios4 above】
20120204
說明:
iAd是一個可以讓開發者經由申請後,可放在自己的app中,當做廣告來源的收入,也可以提供自己製作的iAd上傳到網絡。
可以參考目前已在的app store中的iAd Gallery,下載前請將你的app store轉成us store。



主要參考的頁面:https://developer.apple.com/iad/resources/
ps:參考上面連結即可。


iAd 對 開發者 的好處如下
1.提高你的收入
iAd非常簡單便可實現,百位以上的開發者每季有超過15000美元的產出,因架構于ios上,你不需擔心整合的問題,用少量的code便可將iAd裝載入你的app中,之後剩下的就交給apple的技術人員,技術人員銷售的是廣告,並為廣告商提供服務置入到您的應用程序中,app收集產生的廣告收入的70%會提撥給開發者
ps:以前是只有60%,現在改為70%,所以在一些開發文件中看到60%,那是因為還未改正



2.滿足你app的用戶
iAd提供app無縫的結合,當使用者點擊iAd的banner ad,你的app將會暫停且用戶可直接下載新的app或深入到一種身臨其境的廣告無需離開您的應用程序,當使用者結束iAd時,他們將會回到原有的app頁面,開發者甚至可鎖住競爭對手的的廣告,或者開發者不想出現的廣告在你的app當中,每個廣告傳遞資訊精準,無須從你的app當中使用任何數據資料。
ps:要注意的是,ipad有其特別的iAd尺寸。

3.在你的app中置入世界級的品牌
在iAd的網路中如今包含美國、加拿大、澳大利雅、紐西蘭、日本、法國、德國、義大利、西班牙、英國…等,各個世界頂級且熟悉的品牌設計都在iAd中。

你也可以設計自己的廣告,並將此登錄在iAd的網路中


iTunes connect設定


在啓用iAd到你的app前,你必須加入部分資料到iTunes Connect中。

iAd Network
iAd提供一個自動化和直觀的遭作環境,讓您能夠清酥地將iAd的媒體廣告植入你的ios app,通過iAd網絡,您將有機會經由app用戶點擊而獲得收入,您還可在iTunes connect的主頁上利用iAd模組,監視其效能和跟蹤您的收入。
ps:目前並不支援Mac apps




Setting Up iAd Network
點擊iAd網路的設定按鈕,讓iAd廣告可在您的ios app中啓用。如果您已同意啟用iAd網路合約,此按鈕會顯示您目前的應用程序。




為了使iOS app啟用廣告媒體,點擊設定iAd network按鈕並再之後允許iAd的啟用。
你還需要表明你的主要服務客群是否為未滿17歲的用戶。
當你的app已經上傳itunes connect遞交時,iAd的功能無法被禁用,要移除一個應用程序的廣告,您必須重新提交一個新的『已刪除廣告功能』的二進制文件。



在啓用了至少一個app的iAd廣告,你會在iTunes connect的頁面上看到你的iAd network模組。在這個模組中,你可以設定您的iAd的喜好和跟蹤性能。
重點:在上傳二進制文件前,你必須使你的app啟用iAd的服務。

完成設定後,就會在你的iTunes connect上看到,上圖的icon。


重點提醒:
1.要刪除一個app的iAd,請重新提交你的應用程序。
2.當你選擇你的主要族群為未滿17的用戶時,你將無法更改此設定



在iAd網路中,你可以調整iAd的偏好設定,可判斷何種廣告類型對您的app最有幫助。

更多的詳細訊息,請查看FAQs link(位於iTunes每一頁的底部),然後點擊iAd Network。



As always , if you have any question , feel free to contact me.
有任何問題,請聯絡我

歡迎轉載,請註明出處,感謝。

2013年1月3日 星期四

【armv7,armv7s】different?

【環境:xCode4.5 , ios6 , USE ARC】
宣告:
名稱:
說明:
The iPhone 5's A6 SoC: Not A15 or A9, a Custom Apple Core Instead

主要的說明在上面連結。
What's the main difference between the armv7 and armv7s architecture targets for the LLVM C compiler? The presence of VFPv4 support. The armv7s target supports it, the v7 target doesn't. Why does this matter?
或許你會想瞭解ARM進階精簡指令集機器Advanced RISC Machine) - (浮點處理器)
差別在是否支援VFPv4
主要似乎是跟硬體支援有關係,這部分就不詳細追究下去。

As always , if you have any question , feel free to contact me.
有任何問題,請聯絡我

歡迎轉載,請註明出處,感謝。

2012年12月20日 星期四

【facebook SDK 3.1】what is NEW?

【環境:xCode4.5 , ios5.1 & ios6 , USE ARC】

facebook app的基本設定,請參考:【facebook SDK 3.1】教程1-設定
若你想參考如何登入、驗證、登出:【facebook SDK 3.1】教程2-登入,認證,登出

說明:

首先來分享SDK 3.1有什麼新功能,畢竟工欲善其事、必先利其器,重點還要瞭解他的特性,才能把事情做好。

更快、更簡單的方式,去整合SDK 3.1還有你的iOS app,當然iOS 6是整合的重點,包含:
1.本機facebook login:利用iOS 6去登入facebook的功能,原理應該是,因為你已經利用iOS 6裡面的facebook登入過,所以取得session的方式,也是跟iOS 6拿到,不用再透過scheme的方式,跳到facebook的登入頁,再跳轉回你自己的app,相對的速度上優化許多。

2.分享機制也一樣,透過Native sheet提高分享文章的效能。


因整合ios,故可利用Native 提供的UI元件,讓你更快、更簡單的套用相關功能,如:
Friend Picker、Places Picker、Profile Picture、Login controls 
讓用戶的體驗更加的完善。

ps:不過還是自己打造的元件比較順眼點。

其他特徵包括:
1.與iOS的無縫結合:讓你的app與ios 4.3+版本,更無縫地結合,在iOS6上,更簡單的整合login與分享機制。
2.更簡單的session管理:利用引入的FBSession API,管理、儲存、更新使用者的token。
3.改善API效能:你只需要編寫少量的code去使用Facebook Graph, FQL, and other APIs...等,運用多線程的效能,使用上將更快更完善,讓用戶體驗更好。
4.你可以經由SDK 3.1安裝廣告,去了解有多少用戶使用你的ads,安裝ads可以衡量點擊次數和app的安裝次數。
ps:透過facebook app,也可以看到一些基本資料,如:註冊使用人數...等等。


ps:在這一版的SDK中,也遇過不少問題...因為同時要滿足6和6以下的用戶,又要滿足有些人非用ios6的native facebook,考量的點有很多。


As always , if you have any question , feel free to contact me.
有任何問題,請聯絡我

歡迎轉載,請註明出處,感謝。

2012年7月11日 星期三

實現Custom URL Schemes

【環境:xCode4.3.2 , ios5.1 , USE ARC】
參考來源:Implementing Custom URL Schemes
說明:
URL Schemes,通常運用在從自己的app,透過NSURL溝通其他app時,的一個機制。
<URL Schemes的介紹請參考:ios URL Scheme Reference>

Registering Custom URL Schemes


在這邊就不多做說明,先來說明設定方式,如圖:

到TARGETS->info中新增一個Add URL TYPE
並在其中添加相關資訊,如圖:
在圖中需要注意的只有:identifier、URL Schemes、Role
其它如icon...等,其實不怎麼重要,唯一可能就是若你的app提供多個第三方app跳轉,那除了文字之外,直接可以用圖片去選擇,你要開啓的外部app。
最重要的就是你的URL Schemes,這就是其他app呼叫你的app時,必須提供的辨識名稱,若你的app不需被呼叫,或者呼叫後,不須由其他app返回,基本上就不需要設定。



Handling URL Requests


設定好相關資訊後,重點就是處理返回的URL Requests。
可以根據下列方法去實現:


其中application:didFinishLaunchingWithOptions:是負責判斷該app是否被呼叫,若return YES,則application:openURL:sourceApplication:annotation:或者application:handleOpenURL:就會被執行,然後開始處理傳遞過來的URL,如圖6-2。<至於如何傳遞可參考:app溝通其他外部程式(一)>






若你的app正在運行,只是在後台暫停運行,當你的url到達時,系統就會直接調用application:openURL:sourceApplication:annotation:,若你的系統沒有實現該方法,則會調用application:handleOpenURL:,故這兩個方法可以同時存在,系統會自動判斷目前的ios版本是否4.2之後或者4.1之前。如圖6-3:


Note: Apps that support custom URL schemes can specify different launch images to be displayed when launching the app to handle a URL. For more information about how to specify these launch images, see “Providing Launch Images for Custom URL Schemes.”
若要使用URL Scheme圖片,就請參考Note


所有的資訊均會透過url去傳遞到其他的app,你可以參考<NSURL根據RFC 1808下的解析方式>,去制定你的url。
關於程式的參考,可以參考本文開頭,官方所寫文件,其中有範例,或者參考<app溝通其他外部程式(一)>




注意:一定要驗證你的url,不管是傳進還是傳出,驗證的方式很多種,包含加密,可以參考apple  “Validating Input And Interprocess Communication” inSecure Coding Guide 去處理你的url,以避免問題發生。
關於NSURL Scheme reference請參考:ios URL Scheme Reference




As always , if you have any question , feel free to contact me.
有任何問題,請聯絡我

歡迎轉載,請註明出處,感謝。