不啟動應用,url scheme以及推送跳轉(zhuǎn)指定頁面

通常情況

1、推送

推送過來的消息,點擊后都是要跳到指定的頁面的,比如我是一款社交軟件,我獲得了一個新粉絲,應用在后臺的情況下,點擊消息,會跳轉(zhuǎn)到指定的頁面,比如“我的粉絲”頁面。這時,我們會在AppDelegate里的如下方法,處理推送過來的消息

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo

2、Url Scheme

還有H5頁面,比如我用Safari打開了一款App的Web版,可能這個頁面就會有一個,Banner,上面有一個“打開XXApp”的按鈕,假設(shè)我這個Web頁面是一款商品的詳情頁,那我點擊“打開XXApp”后,就會打開這款App,并跳轉(zhuǎn)到這款商品的詳情頁。具體是通過url scheme實現(xiàn)的,以我們公司的App為例

com.gc.iosApp://?params={"des":"foodview","skuid":"248"}

com.gc.iosApp為App的跳轉(zhuǎn)鏈接,params后為Json格式的附帶參數(shù),用來跳轉(zhuǎn)到指定頁面,攔截這個字符串的方法為AppDelegate中的如下方法

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {
    // url query返回的字符串為params={"des":"foodview","skuid":"248"}
    NSString *str = [[url query] stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
}

關(guān)閉App的情況

但實際上,我們在完全退出App的情況下,比如雙擊home后,把App關(guān)掉,這種情況下,無論是點擊推送消息還是點擊h5上的url scheme跳轉(zhuǎn),上面提到的兩個跳轉(zhuǎn)方法,都是不執(zhí)行的,所以這時我們就要在以下方法做處理了。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

當App未啟動時,點擊推送消息或者點擊h5上的url scheme,就會執(zhí)行以上方法,而跳轉(zhuǎn)信息都是保存在參數(shù)launchOptions中。

// 取到推送信息
NSDictionary *remoteNotification = [launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey];

// 取到url scheme跳轉(zhuǎn)信息
NSURL *url = [launchOptions objectForKey:UIApplicationLaunchOptionsURLKey];

獲取到相關(guān)跳轉(zhuǎn)信息后,就可以跳轉(zhuǎn)到具體頁面了,也就解決了未啟動App時無法跳轉(zhuǎn)詳情頁面的問題。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容