亚洲欧美日韩精品久久亚洲区,篮球队长被绑在器材室榨精,网友:视觉效果简直令人叹服叫绝!_云搜索

      <ruby id="j9hll"></ruby>
          <pre id="j9hll"></pre>

              <pre id="j9hll"></pre>

              <p id="j9hll"><mark id="j9hll"><progress id="j9hll"></progress></mark></p>

              SDk集成

              添加依賴庫

              民生小程序SDK以framework的形式提供集成,將FireflyMiniApp.framework以及其依賴庫添加到工程;詳細參見 接入iOS

              添加SDK需要的系統庫,Xcode —> Build Phases —> Link Binary With Libraries 中,添加下圖中的庫

              修改編譯選項

              在Xcode中,添加如下編譯設置:Other Link Flags : -ObjC,設置

              關閉工程的bigcode選項:Enable Bitcode: NO

              權限設置

              在使用攝像頭、麥克風、定位、相冊等功能的時候,會檢查相應權限。用戶需要手動在項目的info.plist文件中添加相應權限,如下圖所示:

              使用定位權限時,除了添加響應權限,還需要打開后臺位置更新:

              iOS10 之后的系統版本,如果調用相關權限之前沒有在info.plist中添加聲明,可能引起程序崩潰

              小程序初始化

              查詢配置信息

              民生小程序支持web本地話功能,小程序的配置信息是動態下發的,包含小程序離線版的增量更新等內容,首先要獲取本地小程序的版本號來請求小程序的配置信息,調用的api:

              API

              - (NSString * _Nonnull)offLineMiniappVersionWithMiniAppIdAlias:(NSString * _Nonnull)miniAppIdAlias;
              				

              參數

              屬性 類型 默認值 必填
              miniAppIdAlias NSString 必填

              返回值

              返回類型為NSString,表示本地小程序版本號,如果沒有小程序離線包信息,返回結果為空字符串,反之有對應本地離線小程序版本號。

              示例代碼:

              FireflyMiniappManager *manager = [FireflyMiniappManager manager];
              NSString *version = [manager offLineMiniappVersionWithMiniAppIdAlias:@"別名"];

              設置小程序代理

              /**
               bridge 代理
               */
              @property(nonatomic,weak) id<FireflyMiniappNativeProtocol> _Nullable bridgeDelegate;
              
              /**
               小程序管理者代理
               */
              @property(nonatomic,weak) id<FireflyMiniappManagerProtocol> _Nullable managerDelegate;

              小程序管理類FireflyMiniappManager有兩個代理,為bridgeDelegatemanagerDelegate,分別管理前端與native的交互和小程序與客戶端的交互。

              示例代碼:

              [FireflyMiniappManager manager].bridgeDelegate = self;
              [FireflyMiniappManager manager].managerDelegate = self;

              設置小程序配置信息

              API

              /**
               啟動小程序(啟動之前設置好小程序的代理)
               @param nav 導航控制器
               @param completion 小程序啟動完畢
               */
              - (void)startMiniappWithNavigationController:(UINavigationController * _Nonnull)nav completion:(CompletionBlcok _Nonnull )completion;

              網絡請求下來配置信息之后,問了確保容器啟動完畢,在復制小程序配置信息,需要利用回調的ettingDictBlock 傳遞 配置信息 dict

              參數

              屬性 類型 默認值 必填
              nav UINavigationController 必填
              completion CompletionBlcok 必填

              實例代碼

              [[FireflyMiniappManager manager] startMiniappWithNavigationController:self.navigationController completion:^(SettingDictBlcok  _Nonnull settingDictBlcok) {
                      if (settingDictBlcok) {
                          settingDictBlcok(dict);
                      }
                  }];

              設置小程序錯誤碼回調

              設置錯誤碼回調之后當出現異常時,通過錯誤碼能夠定位問題

              API

              typedef void(^CompletionBlcok)(SettingDictBlcok _Nonnull settingDictBlcok);
              /**
               小程序打開異常時的回調
               */
              @property(nonatomic,copy) OpenErrorBlcok _Nullable openErrorBlcok;

              回調

              typedef void(^OpenErrorBlcok)(FireflyMiniappErrorType type);
              
              typedef NS_ENUM(NSUInteger, FireflyMiniappErrorType) {
                  FireflyMiniappErrorType_container_web_loadFaild = 100,      //網頁加載失敗
                  FireflyMiniappErrorType_container_UnzipFaild = 101,         //解壓縮失敗
                  FireflyMiniappErrorType_container_ShaVerifyFaild = 102,     //sha 值校驗失敗
                  FireflyMiniappErrorType_Manager_SettingDictError = 200,     //配置字典有問題
                  FireflyMiniappErrorType_Manager_SDKNoSupport = 201,         //小程序 SDK 不支持當前小程序
                  FireflyMiniappErrorType_Manager_DBQueryError = 202,         // 數據庫查詢出錯
                  FireflyMiniappErrorType_Manager_OfflineDonwloadError = 203, // 離線包下載出錯
                  FireflyMiniappErrorType_Manager_MD5VerfyFailure = 204,      // 離線包 md5 校驗失敗
                  FireflyMiniappErrorType_Error = 300,                        // 失敗
                  FireflyMiniappErrorType_GPS_Disable = 400                   //定位服務不可用
              };

              示例代碼:

               manager.openErrorBlcok = ^(FireflyMiniappErrorType type) {
                   NSLog(@"%lu",type);
               };

              實現小程序代理

              FireflyMiniappManagerProtocol

              FireflyMiniappManagerProtocol協議規定了小程序和客戶端交互的接口,通知客戶端小程序的生命周期、通知客戶端下載離線包資源,需要客戶端實現。

              小程序關閉

              - (void)fireflyMiniappClose
              {
                  NSLog(@"fireflyMiniappClose");
                    //在此解除 UrlProtocol 注冊,由于 UrlProtocol 在 iOS 當中是全局的原因
                  [[FireflyMiniappManager manager] unRegisterFireflyMiniappUrlProtocol];
              }

              小程序打開

              - (void)fireflyMiniappOpen
              {
                  NSLog(@"fireflyMiniappOpen");
                  //在此注冊 UrlProtocol,為了是攔截 url 進行離線包邏輯,發現本地已有離線包資源會優先加載本地資源
                  [[FireflyMiniappManager manager] registerFireflyMiniappUrlProtocol];
              }

              小程序即將push一個新的頁面

              - (void)fireflyMiniappWillPush:(UIViewController *)controller{
                  NSLog(@"fireflyMiniappWillPush");
              }

              開始下載全量離線包

              - (void)miniappManager:(FireflyMiniappManager *_Nonnull)manager startDownloadOfflinePackageWithPath:(NSString * _Nonnull)path fulldownloadUrl:(NSString * _Nonnull)fulldownloadUrl miniAppCompletion:(FireflyMiniAppCompletion _Nonnull)miniAppCompletion{
                  //下載操作,下載路徑為參數 path,下載完成后通過 miniAppCompletion 回調告知 SDK 下載結果
              }

              開始下載增量離線包

              - (void)miniappManager:(FireflyMiniappManager *_Nonnull)manager startDownloadOfflinePackageWithPath:(NSString * _Nonnull)path patchUrl:(NSString * _Nonnull)patchUrl miniAppCompletion:(FireflyMiniAppCompletion _Nonnull)miniAppCompletion{
                  //下載操作,下載路徑為參數 path,下載完成后通過 miniAppCompletion 回調告知 SDK 下載結果
              }

              FireflyMiniappNativeProtocol

              主要是容器和客戶端的操作。

              小程序設置title回調

              -(void)miniapp_setNavigationBarTitle:(NSString *_Nonnull)title{
                  //小程序設置導航欄標題成功回調
              }

              發送請求的回調

              小程序請求轉發到客戶端,客戶端根據規則從 arg 中取出對應參數,做對應請求操作。請求成功調用 successCallback 通過參數字典 callbackParams 回調結果給SDK,SDK 再透傳給小程序,請求失敗同理。

              -(void)miniapp_requset:(NSDictionary *_Nonnull)arg
                     successCallback:(FireflyMiniAppBridgeCallback _Nonnull )successCallback
                       faildCallback:(FireflyMiniAppBridgeCallback _Nonnull)faildCallback{
                           //請求成功調用 successCallback
                           //請求失敗調用 faildCallback
              }

              登錄獲取token回調

              小程序做登錄操作,告知客戶端進行登錄操作,將登錄的 token 值通過 callback 的參數字典 callbackParams 回調給 SDK,SDK 再透傳給小程序。

              -(void)miniapp_loginWith:(FireflyMiniAppBridgeCallback _Nonnull )callback{
                      callback(@{@"token": @"12313212313132"});
              }

              小程序關閉的回調

              在小程序頁面點擊關閉按鈕會回調該接口。

              -(void)miniapp_navigationCloseThisPage{
              
              }
              亚洲欧美日韩精品久久亚洲区,篮球队长被绑在器材室榨精,网友:视觉效果简直令人叹服叫绝!_云搜索