iOS集成MobLink,實(shí)現(xiàn)H5激活原生APP指定頁面

我們在瀏覽器材失、Safari中打開某個(gè)頁面時(shí)痕鳍,有時(shí)會有“打開APP”的這個(gè)功能,也就是說在web環(huán)境下調(diào)起該頁面對應(yīng)的APP龙巨,并進(jìn)入APP中的這個(gè)頁面笼呆。在iOS9之前,要實(shí)現(xiàn)這個(gè)喚醒APP的功能旨别,通常只能使用scheme诗赌。而這種方式需要提前判斷系統(tǒng)中是否安裝了能夠響應(yīng)此scheme的APP,并且這種方式在微信環(huán)境中是沒法響應(yīng)的秸弛。iOS9之后铭若,推出了Universal Link, 可以通過傳統(tǒng)的HTTP鏈接來啟動(dòng)APP胆屿,這種方式即使在微信環(huán)境中也可以實(shí)現(xiàn)激活原生APP。

項(xiàng)目中通過MobLink三方集成了H5激活原生APP指定頁面的功能偶宫。 本文主要介紹一下MobLink的集成:

一非迹、AppKey的獲取及相關(guān)信息的設(shè)置

在mob平臺申請相應(yīng)的AppKey,并在mob后臺設(shè)置APP的相關(guān)信息纯趋。下載MobLink SDK

二憎兽、項(xiàng)目中的準(zhǔn)備工作

1冷离、將MobLink SDK導(dǎo)入項(xiàng)目中,同時(shí)導(dǎo)入系統(tǒng)庫:libsqlite3纯命、libz1.2.5西剥、libstdc++
2、在項(xiàng)目中配置URL Scheme亿汞,URL Scheme要和Mob后臺中設(shè)置的URL Scheme保持一致
3瞭空、將mob后臺中的Universal Link配置到項(xiàng)目的Associated Domains中

開啟此項(xiàng)功能,將Universal Link配置到此處

4疗我、 在Info.plist中添加“MOBAppKey”和“MOBAppSecret”

三咆畏、代碼部分的實(shí)現(xiàn)。

1吴裤、在需要打開的頁面配置對應(yīng)路徑

//定義的路徑
static NSString *const PMArticleMobLinkPath = @"/newsDetail";
+ (NSString *)MLSDKPath
{
    return NewsDetailMobLinkPath;
}

2挠铲、實(shí)現(xiàn)帶有場景參數(shù)的初始化方法能扒,并根據(jù)場景參數(shù)還原該控制器

- (instancetype)initWithMobLinkScene:(MLSDKScene *)scene
{
    if (self = [super init])
    {
        self.scene = scene;
    }
return self;

3、在分享的方法中獲取mobId

-(void)shareAction{
    // 根據(jù)路徑、來源以及自定義參數(shù)構(gòu)造scene
    MLSDKScene *scene = [[MLSDKScene alloc] initWithMLSDKPath:NewsDetailMobLinkPath source:@"NewsDetailViewController" params:nil];
    __weak typeof(self) weakSelf = self;
    [MobLink getMobId:scene result:^(NSString *mobId) {
       
       weakSelf.mobid = mobId;
         
    }];

 [ShareSDKMethod shareToPlatformsWithNetImage:_imageURL 
                                   LocalImage:localImg
                                 ShareContent:_shareContent
      ShareLink:_shareLink 
     ShareTitle:_shareTitle];
}

4念颈、MobLink在運(yùn)行的時(shí)候會通過相應(yīng)的delegate方法實(shí)現(xiàn)相應(yīng)頁面的還原跳轉(zhuǎn),MobLink的delegate方法不是必須實(shí)現(xiàn)的碘举,但是要實(shí)現(xiàn)更多的自定義操作的話則需要通過這些delegate方法格侯。

在APPdelegate中簽代理IMLSDKRestoreDelegate,設(shè)置MobLink代理
[MobLink setDelegate:self];

實(shí)現(xiàn)相關(guān)的代理方法IMLSDKWillRestoreScene潮秘,根據(jù)回調(diào)的scene琼开,判斷要打開的頁面

//網(wǎng)頁打開app時(shí)根據(jù)路徑打開相應(yīng)的頁面

- (void) IMLSDKWillRestoreScene:(MLSDKScene *)scene Restore:(void (^)(BOOL, RestoreStyle))restoreHandler
{

    NSLog(@"Will Restore Scene - Path:%@",scene.path);
     if ([scene.path isEqualToString:NewsDetailMobLinkPath]) {
        
            //新聞詳情
 
         NewsDetailViewController *detailVC=[ NewsDetailViewController new];
           [detailVC setHidesBottomBarWhenPushed:YES];
           detailVC.newsID=[scene.params[@"id"] integerValue];
          [self.tabController.viewControllers[0] pushViewController:detailVC animated:NO];
       }
    } else{
        
        restoreHandler(YES, MLDefault);
    }
}

四、遇到的問題

在處理這部分時(shí)花費(fèi)了不少時(shí)間枕荞,主要碰到的問題有兩個(gè)柜候,一是路徑的配置,二是頁面的打開方式躏精。

1渣刷、 路徑的配置。
一開始的時(shí)候矗烛,客戶端和web配置的相同的路徑辅柴,但是始終都是只能打開原生app,而不能跳轉(zhuǎn)到具體的頁面瞭吃,知道是路徑配置有問題碌嘀,換了好些配置方式,均不可跳轉(zhuǎn)歪架,后來在打印跳轉(zhuǎn)路徑時(shí)發(fā)現(xiàn)股冗,在web配置的路徑,在客戶端打印時(shí)路徑前面會多了“/”,比如web頁面配置的“newsDetail”,客戶端也配置的“newsDetail”和蚪,路徑看起來是一致的止状,但實(shí)際上客戶端打印路徑的時(shí)候是“/newsDetail”,也就是如果配置的路徑前面未加“/”,sdk會自動(dòng)為路徑加上”/”,這時(shí)客戶端必須把路徑配置為“/newsDetail”烹棉,這樣才能使得路徑統(tǒng)一,跳轉(zhuǎn)到對應(yīng)的頁面怯疤。

2浆洗、 頁面的打開方式。
SDK處理頁面的打開方式是: 如果APP中帶有導(dǎo)航控制器(UINavigationController)集峦,則恢復(fù)時(shí)MobLink會采用Push的方式伏社,但是如果APP中沒有導(dǎo)航控制器,則恢復(fù)時(shí)MobLink會采用Modal的方式少梁。由于APP的詳情頁中沒有使用系統(tǒng)自帶的導(dǎo)航欄洛口,所以打開頁面時(shí)MobLink會采用modal的方式打開,而在app中正常進(jìn)入該頁面時(shí)使用的是push的方式打開的凯沪,要想在web頁面激活原生APP指定頁面時(shí)也用push的方式呈現(xiàn)的話第焰,需要客戶端做相應(yīng)處理,重寫SDK中的代理方法
- (void) IMLSDKWillRestoreScene:(MLSDKScene *)scene Restore:(void (^)(BOOL, RestoreStyle))restoreHandler妨马;在該方法中自行處理頁面的打開方式挺举。

五、總結(jié)

激活指定頁面的整個(gè)原理和push有點(diǎn)類似烘跺∠孀荩客戶端和web雙方定義好相應(yīng)的落地頁路徑的規(guī)則,當(dāng)點(diǎn)擊web頁面中的”打開APP”按鈕時(shí)滤淳,MobLink充當(dāng)客戶端和web頁面之間的媒介梧喷,將要去往的路徑和頁面所需的ID告訴客戶端,客戶端根據(jù)路徑和ID脖咐,跳轉(zhuǎn)到對應(yīng)的頁面铺敌。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市屁擅,隨后出現(xiàn)的幾起案子偿凭,更是在濱河造成了極大的恐慌,老刑警劉巖派歌,帶你破解...
    沈念sama閱讀 206,013評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件弯囊,死亡現(xiàn)場離奇詭異,居然都是意外死亡胶果,警方通過查閱死者的電腦和手機(jī)匾嘱,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,205評論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來早抠,“玉大人霎烙,你說我怎么就攤上這事。” “怎么了吼过?”我有些...
    開封第一講書人閱讀 152,370評論 0 342
  • 文/不壞的土叔 我叫張陵,是天一觀的道長咪奖。 經(jīng)常有香客問我盗忱,道長,這世上最難降的妖魔是什么羊赵? 我笑而不...
    開封第一講書人閱讀 55,168評論 1 278
  • 正文 為了忘掉前任趟佃,我火速辦了婚禮,結(jié)果婚禮上昧捷,老公的妹妹穿的比我還像新娘闲昭。我一直安慰自己,他們只是感情好靡挥,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,153評論 5 371
  • 文/花漫 我一把揭開白布序矩。 她就那樣靜靜地躺著,像睡著了一般跋破。 火紅的嫁衣襯著肌膚如雪簸淀。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 48,954評論 1 283
  • 那天毒返,我揣著相機(jī)與錄音租幕,去河邊找鬼。 笑死拧簸,一個(gè)胖子當(dāng)著我的面吹牛劲绪,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播盆赤,決...
    沈念sama閱讀 38,271評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼贾富,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了弟劲?” 一聲冷哼從身側(cè)響起祷安,我...
    開封第一講書人閱讀 36,916評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎兔乞,沒想到半個(gè)月后汇鞭,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,382評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡庸追,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,877評論 2 323
  • 正文 我和宋清朗相戀三年霍骄,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片淡溯。...
    茶點(diǎn)故事閱讀 37,989評論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡读整,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出咱娶,到底是詐尸還是另有隱情米间,我是刑警寧澤强品,帶...
    沈念sama閱讀 33,624評論 4 322
  • 正文 年R本政府宣布,位于F島的核電站屈糊,受9級特大地震影響的榛,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜逻锐,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,209評論 3 307
  • 文/蒙蒙 一夫晌、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧昧诱,春花似錦晓淀、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,199評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至蜈亩,卻和暖如春锄俄,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背勺拣。 一陣腳步聲響...
    開封第一講書人閱讀 31,418評論 1 260
  • 我被黑心中介騙來泰國打工奶赠, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人药有。 一個(gè)月前我還...
    沈念sama閱讀 45,401評論 2 352
  • 正文 我出身青樓毅戈,卻偏偏與公主長得像,于是被迫代替她去往敵國和親愤惰。 傳聞我的和親對象是個(gè)殘疾皇子苇经,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,700評論 2 345

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)宦言,斷路器扇单,智...
    卡卡羅2017閱讀 134,599評論 18 139
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,495評論 25 707
  • Spring Boot 參考指南 介紹 轉(zhuǎn)載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 46,748評論 6 342
  • 在刷微博的時(shí)候,看到了一條消息:南昌某男子攜小三逼死原配奠旺。當(dāng)然類似于這樣小三插足的婚姻蜘澜,社會上可謂屢見不鮮...
    子煙靈閱讀 1,037評論 0 0
  • 生活中,我喜歡觀察,喜歡刨根問底鸦采。 發(fā)生我身邊的幾個(gè)現(xiàn)象宾巍,一直不解,直到最近才理清楚緣由渔伯。 現(xiàn)象一:十來歲的孩子蜀漆,...
    江瑞閱讀 720評論 0 2