成全在线观看免费完整版下载|成全在线观看免费完整版电影|成全在线观看免费完整版第6|成全在线观看免费完整|成全在线观看高清完整版免费动漫|成全在线电影在线观看

SDk集成

添加依賴庫(kù)

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

添加SDK需要的系統(tǒng)庫(kù),Xcode —> Build Phases —> Link Binary With Libraries 中,添加下圖中的庫(kù)

修改編譯選項(xiàng)

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

關(guān)閉工程的bigcode選項(xiàng):Enable Bitcode: NO

權(quán)限設(shè)置

在使用攝像頭、麥克風(fēng)、定位、相冊(cè)等功能的時(shí)候,會(huì)檢查相應(yīng)權(quán)限。用戶需要手動(dòng)在項(xiàng)目的info.plist文件中添加相應(yīng)權(quán)限,如下圖所示:

使用定位權(quán)限時(shí),除了添加響應(yīng)權(quán)限,還需要打開后臺(tái)位置更新:

iOS10 之后的系統(tǒng)版本,如果調(diào)用相關(guān)權(quán)限之前沒有在info.plist中添加聲明,可能引起程序崩潰

小程序初始化

查詢配置信息

民生小程序支持web本地話功能,小程序的配置信息是動(dòng)態(tài)下發(fā)的,包含小程序離線版的增量更新等內(nèi)容,首先要獲取本地小程序的版本號(hào)來請(qǐng)求小程序的配置信息,調(diào)用的api:

API

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

參數(shù)

屬性 類型 默認(rèn)值 必填
miniAppIdAlias NSString 無(wú) 必填

返回值

返回類型為NSString,表示本地小程序版本號(hào),如果沒有小程序離線包信息,返回結(jié)果為空字符串,反之有對(duì)應(yīng)本地離線小程序版本號(hào)。

示例代碼:

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

設(shè)置小程序代理

/**
 bridge 代理
 */
@property(nonatomic,weak) id<FireflyMiniappNativeProtocol> _Nullable bridgeDelegate;

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

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

示例代碼:

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

設(shè)置小程序配置信息

API

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

網(wǎng)絡(luò)請(qǐng)求下來配置信息之后,問了確保容器啟動(dòng)完畢,在復(fù)制小程序配置信息,需要利用回調(diào)的ettingDictBlock 傳遞 配置信息 dict

參數(shù)

屬性 類型 默認(rèn)值 必填
nav UINavigationController 無(wú) 必填
completion CompletionBlcok 無(wú) 必填

實(shí)例代碼

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

設(shè)置小程序錯(cuò)誤碼回調(diào)

設(shè)置錯(cuò)誤碼回調(diào)之后當(dāng)出現(xiàn)異常時(shí),通過錯(cuò)誤碼能夠定位問題

API

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

回調(diào)

typedef void(^OpenErrorBlcok)(FireflyMiniappErrorType type);

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

示例代碼:

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

實(shí)現(xiàn)小程序代理

FireflyMiniappManagerProtocol

FireflyMiniappManagerProtocol協(xié)議規(guī)定了小程序和客戶端交互的接口,通知客戶端小程序的生命周期、通知客戶端下載離線包資源,需要客戶端實(shí)現(xiàn)。

小程序關(guān)閉

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

小程序打開

- (void)fireflyMiniappOpen
{
    NSLog(@"fireflyMiniappOpen");
    //在此注冊(cè) UrlProtocol,為了是攔截 url 進(jìn)行離線包邏輯,發(fā)現(xiàn)本地已有離線包資源會(huì)優(yōu)先加載本地資源
    [[FireflyMiniappManager manager] registerFireflyMiniappUrlProtocol];
}

小程序即將push一個(gè)新的頁(yè)面

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

開始下載全量離線包

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

開始下載增量離線包

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

FireflyMiniappNativeProtocol

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

小程序設(shè)置title回調(diào)

-(void)miniapp_setNavigationBarTitle:(NSString *_Nonnull)title{
    //小程序設(shè)置導(dǎo)航欄標(biāo)題成功回調(diào)
}

發(fā)送請(qǐng)求的回調(diào)

小程序請(qǐng)求轉(zhuǎn)發(fā)到客戶端,客戶端根據(jù)規(guī)則從 arg 中取出對(duì)應(yīng)參數(shù),做對(duì)應(yīng)請(qǐng)求操作。請(qǐng)求成功調(diào)用 successCallback 通過參數(shù)字典 callbackParams 回調(diào)結(jié)果給SDK,SDK 再透?jìng)鹘o小程序,請(qǐng)求失敗同理。

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

登錄獲取token回調(diào)

小程序做登錄操作,告知客戶端進(jìn)行登錄操作,將登錄的 token 值通過 callback 的參數(shù)字典 callbackParams 回調(diào)給 SDK,SDK 再透?jìng)鹘o小程序。

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

小程序關(guān)閉的回調(diào)

在小程序頁(yè)面點(diǎn)擊關(guān)閉按鈕會(huì)回調(diào)該接口。

-(void)miniapp_navigationCloseThisPage{

}
山阳县| 南漳县| 松原市| 新竹县| 兴安县| 福建省| 鹿泉市| 扎兰屯市| 吉林市| 宿松县| 鄂伦春自治旗| 余姚市| 涟水县| 临湘市| 旬邑县| 丽江市| 秦安县| 库尔勒市| 阿拉善右旗| 铁力市| 武邑县| 武功县| 久治县| 焉耆| 平顺县| 马公市| 宜宾县| 龙川县| 桃园县| 独山县| 临武县| 莱州市| 张家港市| 胶南市| 芒康县| 博湖县| 阳江市| 赫章县| 南陵县| 纳雍县| 昭平县|