簡體   English   中英

具有自定義應用行為的自定義URL方案

[英]Custom URL scheme with custom app behavior

我正在制作一個有多個使用案例的應用。 它具有主要功能(通過按app圖標激活),然后是主要功能的其他子集,這些子集由自定義URL方案激活。

為了解釋我的問題,我應該解釋一下我目前如何告訴我的應用程序表現不同。

我一直在使用: - (BOOL)應用程序:didFinishLaunchingWithOptions:

從選項中獲取url:[launchOptions objectForKey:[keyArray objectAtIndex:0]]

現在我解析urlString並獲取所有的launchType參數,將它們放在NSUserDefaults中。 然后我等待我的啟動畫面出現,然后它會告訴我的應用程序如何表現。

起初這似乎沒什么問題,但后來我意識到:如果我深入鏈接到應用程序,並且呈現功能B,那么應用程序進入后台,下次應用程序占用前景(無論哪種方式) ,它將顯示功能B.

我想知道是否有人對標准練習有所了解,人們通常使用哪些方法?

僅供參考,我將通過告訴我的navigationcontroller到popToRootViewController來解決這個問題,當 - (BOOL)應用程序:應用程序handleOpenURL:被調用時,UNLESS didFinishLaunchingWithOptions在它之前被調用,在這種情況下,只需執行我之前實現的操作。

聽起來對我來說,有一些事情要考慮這種方法。

首先來看看UIApplicationDelegate文檔。 -application:willFinishLaunchingWithOptions:警告:

如果您的應用程序已啟動以打開URL,則應檢查UIApplicationLaunchOptionsURLKey鍵的值,並返回一個布爾值,指示您的應用程序是否可以實際打開URL。 您不應該嘗試在此方法中打開URL。 而是在應用程序委托中實現應用程序:openURL:sourceApplication:annotation:method,並使用該方法打開URL。

-application:openURL:sourceApplication:annotation:我們看到:

如果您的應用程序必須啟動以打開URL,則應用程序首先調用應用程序:willFinishLaunchingWithOptions:和application:didFinishLaunchingWithOptions:methods,然后是此方法。 這些方法的返回值可用於防止調用此方法。 如果應用程序已在運行,則僅調用此方法。

其次,聽起來你正在使用NSUserDefaults持久存儲應該是一個臨時狀態(如果應用程序是通過url啟動的話)。 你有沒有重置你在那里設置的值,或者通過url啟動應用程序一旦離開它始終遵循該路徑。

最后,用戶可以合理地期望應用程序將從中斷的位置恢復。 用戶將離開您的應用以響應電話,短信,通知,外部干擾,其他應用的需求以及任何其他原因。 當他們恢復/重新啟動應用程序(而不是通過網址)時,拒絕讓他們返回他們離開的地方可能會產生糟糕的用戶體驗。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM