QQ小程序 打開 App

2020-07-03 14:51 更新

此功能需要用戶主動觸發(fā)才能打開 APP,所以不由 API 來調(diào)用,需要用 open-type 的值設(shè)置為 launchApp 的 <button> 組件的點(diǎn)擊來觸發(fā)。 當(dāng)小程序從 APP 分享消息卡片的場景打開(場景值 1036)或 移動應(yīng)用打開(場景值 1069),小程序會獲得打開 APP 的能力,此時用戶點(diǎn)擊按鈕可以打開分享該小程序卡片/拉起該小程序的 APP。即小程序不能打開任意 APP,只能 跳回 APP。 在一個小程序的生命周期內(nèi),只有在特定條件下,才具有打開 APP 的能力。 當(dāng)小程序從 1069 和 1036 場景打開時,可以打開 APP。 當(dāng)小程序從非 1036 和 1069 的場景值打開時,會在小程序框架內(nèi)部會管理的一個狀態(tài),為 true 則可以打開 APP,為 false 則不可以打開 APP。這個狀態(tài)的維護(hù)遵循以下規(guī)則:

  • 當(dāng)小程序從 App 分享消息卡片(場景值1036) 或 移動應(yīng)用打開(場景值 1069) 打開時,該狀態(tài)置為 true。
  • 當(dāng)小程序從以下場景打開時,保持上一次打開小程序時打開 App 能力的狀態(tài):

  1. 從其他小程序返回小程序(場景值1038)時
  2. 從QQ主界面-下拉列表(場景值1091)時
    • 當(dāng)小程序從非以上場景打開時,不具有打開 APP 的能力,該狀態(tài)置為 false。

使用方法

小程序端

需要將 <button>組件 open-type 的值設(shè)置為 launchApp。如果需要在打開 APP 時向 APP 傳遞參數(shù),可以設(shè)置 app-parameter 為要傳遞的參數(shù)。通過 binderror 可以監(jiān)聽打開 APP 的錯誤事件。 開發(fā)者需要在button組件中填充下列參數(shù),才能正常使用:

  1. app-packagename:應(yīng)用的包名 (安卓)

  1. app-bundleid:應(yīng)用的bundleid (iOS)

  1. app-connect-id:QQ互聯(lián)中的AppID

小程序代碼示例

<button open-type="launchApp" app-packagename="com.tencent.qq" app-bundleid="com.tencent.qq" app-connect-id="101010101" binderror="launchAppError">
  打開APP
</button>

Page({
  launchAppError(e) {
    console.log(e.detail.errMsg)
  }
})

error 事件參數(shù)說明

|值|說明| |invalid scene|調(diào)用場景不正確,即此時的小程序不具備打開 APP 的能力。|

app 端

APP 需要接入 互聯(lián)sdk。 文檔請參考 (https://wiki.connect.qq.com)

iOS端

app-parameter獲取方法如下: 在UIApplicationDelegate的實現(xiàn)中添加如下代碼

- (BOOL)application:(UIApplication *)app
            openURL:(NSURL *)url
            options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options {
    // 判斷url.host
    if ([url.host isEqualToString:@"maLaunchApp"]) {
        // 獲取appParameter
        NSURLComponents *components = [[NSURLComponents alloc] initWithString:url.absoluteString];
        [components.queryItems enumerateObjectsUsingBlock:^(NSURLQueryItem * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
            if ([obj.name isEqualToString:@"appParameter"]) {
                // 傳遞到客戶端的appParameter經(jīng)過url encode
                NSString *encodedValue = obj.value;
                // TODO: 將encodedValue 通過標(biāo)準(zhǔn)url decode還原
            }
        }];

        
    }

    
    return YES;
}

Android端 app-parameter獲取方法如下: 如果app-parameter的參數(shù)含有”path“,則通過Intent.ACTION_VIEW + path內(nèi)容(Uri)的方式啟動app。path為app端可識別的內(nèi)容即可打開對應(yīng)的頁面。

  <button open-type="launchApp" 
    app-packagename="com.tencent.qq" 
    app-bundleid="com.tencent.qq" 
    app-connect-id="101010101"
    app-parameter="{'path':'Uri'}"(此處app-parameter參數(shù)要求為JSON格式)
    binderror="launchAppError">
  打開APP
</button>

如果app-parameter的參數(shù)不含有”path“,則通過Intent.ACTION_MAIN的方式啟動app。參數(shù)在主activity的getIntent()中獲取,key為“appParameter”,value透傳app-parameter內(nèi)容。

  <button open-type="launchApp" 
    app-packagename="com.tencent.qq" 
    app-bundleid="com.tencent.qq" 
    app-connect-id="101010101"
    app-parameter="test:123"
    binderror="launchAppError">
  打開APP
</button>
以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號