2013-01-01 76 views
0

我想爲我的應用程序的用戶發送內容給對方的簡單方法。這個內容將是一個單一的配方,有一個名稱,成分列表和一些說明。也許有一天它會包含一些圖像。使用自定義URL方案導入數據

我被簡化爲使用自定義URL方案來實現這一點,並依靠電子郵件進行通信。我的應用程序將能夠撰寫電子郵件,並使用此URL方案嵌入鏈接。接收配方的人會在電子郵件中點擊此鏈接,它會打開我的應用程序(如果已安裝)。鏈接將包括要添加的配方的詳細信息。

我不知道如何最好地構造URL以便它包含配方的細節。無論我使用哪種慣例來確定配方名稱與成分與指示,可能都是有問題的。例如,如果我決定要建造這樣的:

`對myApp://名稱=莎莎& ING =西紅柿& ING =蒜...

如果用戶已經創建了一個配方中使用 '&'一個成分名稱,我會解析網址不正確。

我該如何避免這種情況?有沒有辦法首先打包內容,或者至少包括校驗和(因此接收應用程序可以放棄任何看起來不正確的內容)。如果沒有,是否有構建一個包含這樣的數據的URL的最佳做法?

+1

您需要百分比轉義URL字段中的字段(例如,使用'%26'替換&符號等)。但在你到那裏之前,請注意一般URL在長度上有一些實際的限制,所以發送一個完整的配方(尤其是一張圖片,你必須使用base64編碼或類似的東西)可能並不實際。 – Rob

+1

查看http://stackoverflow.com/questions/705448/iphone-sdk-issue-with-ampersand-in-the-url-string討論有關百分比轉義您的參數的討論,如果您最終走了那條路線。 – Rob

+0

謝謝。當我解碼時會發生什麼,並且用戶輸入了%26的名字? –

回答

1

您應該在將用戶輸入嵌入到URL之前對用戶輸入進行清理(即URL轉義)。您可以使用CoreFoundation功能CFURLCreateStringByAddingPercentEscapes()函數進行此類轉換。

+0

我想我明白了。那麼我應該單獨編碼每個成分名稱,然後形成字符串?在接收端,我會分離出成分,並解碼每個成分? –

+0

@BenPackard是的,就是這樣,基本上。另外,不要忘記,使用不同ingerdients同名/關鍵是不好的做法,來的東西,而不是'&荷蘭國際集團=第一成分與荷蘭國際集團=第二ingredient'等 – 2013-01-01 22:53:23

+0

我想知道有關事情。也許逗號分隔的成分?例如。成分= firstIng,secondIng等?除此之外,我想我需要挑選一些實際編碼的東西? –