PetChat Source Map

PetChat 功能、SDK、参数下发与埋点总览

以下内容只读取 /Users/xiaomao822/Desktop/git/petchat/PetChat 的代码和文档,并展示在当前官网项目中。

11

功能分支

37

SDK/能力集成

165

埋点事件

36

下发参数

PetChat Branch

dev_1.1.3

Commit

ed1ec8d

Last PetChat Change

打包提交:蒲公英 1.1.3(3)

2026-07-15 17:17:19 +0800

Current layer

PetChat 功能总览

11 个下层节点

由同步脚本扫描 PetChat/Module 下的业务目录、源码文件和主要类名生成。

来源:PetChat/Module

Current layer

三方 SDK 与触发点

6 个下层节点

由 Podfile 和源码 import/调用点扫描生成。

来源:Podfile, PetChat/Common, PetChat/Module

Remote Config

参数下发默认值、功能与触发位置

基于 `PCRemoteConfigKeys`、`PCAppRemoteConfig` 和实际业务调用点整理,覆盖 Firebase Remote Config 与友盟 RemoteConfig 的统一读取层。

参数 Key模块默认值对应功能触发代码位置解析位置
Demo_Key公共能力false / defaultPetTalkTrialConfig.freeTrialCountDemo Key:用于验证“参数下发 + 解析层”链路是否打通。未扫描到业务触发点PetChat/Common/Managers/RemoteConfig/PCAppRemoteConfig.swift:441
pet_magic_free_trial_count公共能力1Pet Magic:免费试用次数(默认 1)。未扫描到业务触发点PetChat/Common/Managers/RemoteConfig/PCAppRemoteConfig.swift:563, PetChat/Common/Managers/RemoteConfig/PCAppRemoteConfig.swift:585
pet_talk_free_trial_count公共能力false / defaultPetTalkTrialConfig.freeTrialCountPet Talk:免费试用配置。 兼容两种下发方式: 1)旧版直接下发整数字符串; 2)1.0.9 起下发 JSON(内含 `free_trial_count` / `emotion_free_trial_count`)。未扫描到业务触发点PetChat/Common/Managers/RemoteConfig/PCAppRemoteConfig.swift:452
emotion_free_trial_count公共能力false / defaultPetTalkTrialConfig.freeTrialCountPet Talk:情绪翻译免费次数(兼容独立 key 的兜底读取)。未扫描到业务触发点PetChat/Common/Managers/RemoteConfig/PCAppRemoteConfig.swift:463, PetChat/Common/Managers/RemoteConfig/PCAppRemoteConfig.swift:482
pet_talk_guide_config公共能力0Pet Talk:首页引导开关(默认 0)。未扫描到业务触发点PetChat/Common/Managers/RemoteConfig/PCAppRemoteConfig.swift:500
local_audio_detection_enabled公共能力falsePet Talk:客户端本地音频静音检测开关(默认 false)。未扫描到业务触发点PetChat/Common/Managers/RemoteConfig/PCAppRemoteConfig.swift:506
translation_complete_popup公共能力关闭Pet Talk:翻译完成订阅弹窗配置(默认关闭)。未扫描到业务触发点PetChat/Common/Managers/RemoteConfig/PCAppRemoteConfig.swift:512, PetChat/Common/Managers/RemoteConfig/PCAppRemoteConfig.swift:519
selected_offer公共能力商品兜底Pet Talk:翻译完成订阅弹窗默认商品兜底。未扫描到业务触发点PetChat/Common/Managers/RemoteConfig/PCAppRemoteConfig.swift:514, PetChat/Common/Managers/RemoteConfig/PCAppRemoteConfig.swift:523
pet_magic_subscribe_mode公共能力0Pet Magic:订阅模式(默认 0,可直接下发 0/1,也可下发 1.0.9 打包 JSON)。未扫描到业务触发点PetChat/Common/Managers/RemoteConfig/PCAppRemoteConfig.swift:550, PetChat/Common/Managers/RemoteConfig/PCAppRemoteConfig.swift:556
high_quality公共能力defaultPetMagicConfig.subscribeMode / defaultPetMagicConfig.freeTrialCountPet Magic:高清保存次数/开关(1.0.9 业务配置)。未扫描到业务触发点PetChat/Common/Managers/RemoteConfig/PCAppRemoteConfig.swift:570, PetChat/Common/Managers/RemoteConfig/PCAppRemoteConfig.swift:592
pet_sounds_free_trial_count公共能力5Pet Sounds:免费试用次数(默认 5)。未扫描到业务触发点PetChat/Common/Managers/RemoteConfig/PCAppRemoteConfig.swift:601
pet_sounds_subscribe_mode公共能力0Pet Sounds:订阅模式(默认 0)。未扫描到业务触发点PetChat/Common/Managers/RemoteConfig/PCAppRemoteConfig.swift:607
Pet_sounds_rating_guide公共能力4Pet Sounds:播放完成第几次后触发评分引导(默认 4)。未扫描到业务触发点PetChat/Common/Managers/RemoteConfig/PCAppRemoteConfig.swift:613
rating_prompt_type公共能力defaultPetMagicConfig.highQualityCount / 5评分引导样式:`system` 为系统评分弹窗,`custom` 为自定义评分弹窗。未扫描到业务触发点PetChat/Common/Managers/RemoteConfig/PCAppRemoteConfig.swift:620
petthought_free_trial_count公共能力3Pet Thoughts:免费试用次数(默认 3)。未扫描到业务触发点PetChat/Common/Managers/RemoteConfig/PCAppRemoteConfig.swift:632
pet_thought_free_trial_count公共能力5 / 0Pet Thoughts:免费试用次数旧版 key 兼容。未扫描到业务触发点PetChat/Common/Managers/RemoteConfig/PCAppRemoteConfig.swift:633
petthought_default_free_style公共能力免费风格(默认Pet Thoughts:非订阅用户默认免费风格(默认 real_insight)。未扫描到业务触发点PetChat/Common/Managers/RemoteConfig/PCAppRemoteConfig.swift:641
petthought_share_qr_url公共能力return "system" / 3Pet Thoughts:分享图二维码落地页 URL(支持 `{style_name}` 占位符)。未扫描到业务触发点PetChat/Common/Managers/RemoteConfig/PCAppRemoteConfig.swift:649
ai_vet_free_trial_count公共能力1AI Health Assistant:免费试用次数(默认 1)。未扫描到业务触发点PetChat/Common/Managers/RemoteConfig/PCAppRemoteConfig.swift:672
subscribe_page_type公共能力0订阅页类型(默认 0)。未扫描到业务触发点PetChat/Common/Managers/RemoteConfig/PCAppRemoteConfig.swift:678
Promote_Sub_Group公共能力见解析代码买量用户订阅分组配置(JSON 数组字符串)。未扫描到业务触发点PetChat/Common/Managers/RemoteConfig/PCAppRemoteConfig.swift:729
Organic_Sub_Group公共能力见解析代码自然用户订阅分组配置(JSON 数组字符串)。未扫描到业务触发点PetChat/Common/Managers/RemoteConfig/PCAppRemoteConfig.swift:737
Grouping公共能力1 / 0独立 Grouping 分组事件参数。 - Note: 运营配置 value(如 `A`)后,客户端需上报 `Grouping_A`。未扫描到业务触发点PetChat/Common/Managers/RemoteConfig/PCAppRemoteConfig.swift:687
Grouping_X公共能力1 / 0Grouping 参数兼容命名。 - Note: 部分文档以 `Grouping_X` 描述该参数,这里兼容一次旧命名读取。未扫描到业务触发点PetChat/Common/Managers/RemoteConfig/PCAppRemoteConfig.swift:693
Main_Page_Show公共能力展示首页首次默认展示 Tab 配置(JSON 数组字符串)。未扫描到业务触发点PetChat/Common/Managers/RemoteConfig/PCAppRemoteConfig.swift:700
boarding_enabled公共能力true引导页总开关:首次启动是否展示 `PCGuideVC`。未扫描到业务触发点PetChat/Common/Managers/RemoteConfig/PCAppRemoteConfig.swift:808
boarding_first公共能力true旧版引导页第 1 页是否展示。未扫描到业务触发点PetChat/Common/Managers/RemoteConfig/PCAppRemoteConfig.swift:814
boarding_second公共能力true旧版引导页第 2 页是否展示。未扫描到业务触发点PetChat/Common/Managers/RemoteConfig/PCAppRemoteConfig.swift:820
boarding_third公共能力true旧版引导页第 3 页是否展示。未扫描到业务触发点PetChat/Common/Managers/RemoteConfig/PCAppRemoteConfig.swift:826
boarding_page_show启动true1.0.9 新版引导页顺序配置(JSON 数组字符串)。PetChat/Module/Launch/PCLaunchVC.swift:460PetChat/Common/Managers/RemoteConfig/PCAppRemoteConfig.swift:832
Iap_pop_open公共能力defaultIapPopOpenConfig.isEnabled / defaultIapPopOpenConfig.openTime强拉支付配置主 key。 兼容两种下发方式: 1)直接下发 `0/1`; 2)下发 JSON(内含 `Iap_pop_open` / `IAP_Pop_Open_Time` / `Force_Offer_ID`)。未扫描到业务触发点PetChat/Common/Managers/RemoteConfig/PCAppRemoteConfig.swift:880
IAP_Pop_Open公共能力defaultIapPopOpenConfig.isEnabled / defaultIapPopOpenConfig.openTime远端配置 IAP_Pop_Open,由 PCRemoteConfigKeys.iapPopOpenUpper 声明。未扫描到业务触发点PetChat/Common/Managers/RemoteConfig/PCAppRemoteConfig.swift:881
iap_pop_open公共能力defaultIapPopOpenConfig.isEnabled / defaultIapPopOpenConfig.openTime远端配置 iap_pop_open,由 PCRemoteConfigKeys.iapPopOpenLower 声明。未扫描到业务触发点PetChat/Common/Managers/RemoteConfig/PCAppRemoteConfig.swift:882
IAP_Pop_Open_Time公共能力defaultIapPopOpenConfig.isEnabled / defaultIapPopOpenConfig.openTime强拉支付时机(兼容独立 key 兜底)。未扫描到业务触发点PetChat/Common/Managers/RemoteConfig/PCAppRemoteConfig.swift:885
iap_pop_open_time公共能力defaultIapPopOpenConfig.isEnabled / defaultIapPopOpenConfig.openTime远端配置 iap_pop_open_time,由 PCRemoteConfigKeys.iapPopOpenTimeLower 声明。未扫描到业务触发点PetChat/Common/Managers/RemoteConfig/PCAppRemoteConfig.swift:886
Force_Offer_ID公共能力defaultIapPopOpenConfig.isEnabled / defaultIapPopOpenConfig.openTime强拉支付商品 ID(兼容独立 key 兜底)。未扫描到业务触发点PetChat/Common/Managers/RemoteConfig/PCAppRemoteConfig.swift:899, PetChat/Common/Managers/RemoteConfig/PCAppRemoteConfig.swift:914

Analytics

埋点触发逻辑与代码位置

基于 `PCReport.report` 扫描和 PetChat 埋点实现清单整理,包含 Thinking/Firebase 与 Adjust 两类上报目标。

事件 ID模块触发逻辑位置参数目标
Onboard_ClickOnboarding导页继续按钮点击埋点。 /// /// - Parameter index: 当前点击时所在页索引(0-based)。 private func reportOnboardClick(for index: Int) { guard let params = …PetChat/Module/Guide/PCGuideVC.swift:305pageName, numberThinking/Firebase
Onboard_ShowOnboarding// 上报引导页子页展示埋点。 /// /// - Parameter index: 当前展示页索引(0-based)。 private func reportOnboardShow(for index: Int) { guard let params = …PetChat/Module/Guide/PCGuideVC.swift:294pageName, numberThinking/Firebase
onboarding_next_clickOnboardingdTapStartButton), for: .touchUpInside) } /// 点击“开始魔法时刻” @objc private func didTapStartButton() { guard let selectedType else { re…PetChat/Module/Guide/PCSelectPetVC.swift:275petTypeThinking/Firebase
Add_Pets_ClickPet Hubottom.equalToSuperview() } } required init?(coder: NSCoder) { fatalError("init(coder:) has not been implemented") } @objc private…PetChat/Module/PetHub/View/HubAddPetSection.swift:382-Thinking/Firebase
Add_Pets_SuccessPet HubPCToastTool.show(PCLocal(str: "common.success"),duration: 1) { _ in PCDBManager.shared.getPetDataList { [weak self] records, _ in…PetChat/Module/PetHub/PCPetHubAddPetVC.swift:224Pet_NumThinking/Firebase
Pet_Magic_Click_CreatePet MagicbuttonTitle: PCLocal(str: "alert.ok") ) } } /// “开始创作”按钮事件,发起任务。 @objc private func handleMakeButtonTapped() { reportPetMagicLoad…PetChat/Module/PetMagic/PCPetMagicDetailVC.swift:555resource_id, Resource_Name, Resource_Cover_URL, Resource_URLThinking/Firebase
Pet_Magic_Create_ClickPet MagicURL":self.dataModel.cover ?? "","Resource_URL":self.dataModel.url ?? ""])) } } } } func eventClickActive() { reportPetMagicLoadAg…PetChat/Module/PetMagic/PCPetMagicDetailVC.swift:451resource_id, Resource_Name, Resource_Cover_URL, Resource_URLThinking/Firebase
Pet_Magic_Detail_Page_ShowPet Magicems.safeObject(at: indexPath.item) else { return } let detailVC = PCPetMagicDetailVC() detailVC.dataModel = data detailVC.dataArr…PetChat/Module/PetMagic/PCPetMagicVC.swift:430, PetChat/Module/PetMagicNew/vc/PCPetMagicNewListVC.swift:824resource_id, Resource_Name, Resource_Cover_URL, Resource_URLThinking/Firebase
Pet_Magic_Enter_Album_PagePet Magiceak self, weak pickerVC] in self?.handlePhotoPickerTaskCreated(pickerVC: pickerVC) } self.present(pickerVC, animated: true) PCRep…PetChat/Module/PetMagic/PCPetMagicDetailVC.swift:443resource_id, Resource_Name, Resource_Cover_URL, Resource_URLThinking/Firebase
Pet_Magic_Start_LoadPet MagicCreateClick.rawValue,param: ["resource_id":self.dataModel.id ?? "","Resource_Name":self.dataModel.name ?? "","Resource_Cover_URL"…PetChat/Module/PetMagic/PCPetMagicDetailVC.swift:452resource_id, Resource_Name, Resource_Cover_URL, Resource_URLThinking/Firebase
pet_audio_clickPet Soundscell.maskHidden = !shouldShowVipMask(for: visibleItem) } } /// 上报语音包点击埋点。 /// /// - Parameter item: 当前点击的语音包。 private func report…PetChat/Module/PetSounds/PCPetSoundsVC.swift:567audioType, petType, voicePersonality, audioNameThinking/Firebase
Pet_Sounds_ClickPet Sounds音频成功开始播放后,再消耗一次免费次数,避免点击失败也扣次。 PCPetSoundsFreePlayManager.shared.consumeOnceAfterPlaySuccessIfNeeded() refreshVisibleVipMaskState…PetChat/Module/PetSounds/PCPetSoundsVC.swift:528Type, nameThinking/Firebase
Analyzing_Sound_FailPet TalkreportDomain.isEmpty == false { failParam[PCAdjustEventParamKey.requestDomain.rawValue] = reportDomain } failParam.merge(vipState…PetChat/Module/PetTalk/PCVoiceRecordVC.swift:543-Thinking/Firebase
Analyzing_Sound_SuccessPet Talk.type.rawValue: analysisRecordType(for: changeType), PCAdjustEventParamKey.time.rawValue: elapsed, ] successParam.merge(vipStateA…PetChat/Module/PetTalk/PCVoiceRecordVC.swift:298-Thinking/Firebase
Pet_Talk_Mode_ClickPet Talkcase .catToHuman: return "Cat_To_Human" } } /// 上报 Pet Talk 人转宠物模式切换点击。 private func reportPetTalkModeClick(_ mode: HumanInputMod…PetChat/Module/PetTalk/PCPetTalkNewVC.swift:1225translateDirection, modeThinking/Firebase
Pet_Talk_Text_Translate_ClickPet TalkticsValue ] )) } /// 上报 Pet Talk 文字翻译按钮点击及校验结果。 private func reportPetTalkTextTranslateClick(textContent: String, validationResul…PetChat/Module/PetTalk/PCPetTalkNewVC.swift:1237textLength, validationResultThinking/Firebase
Stop_RecordingPet Talkring?) { recordType = type } @objc private func cancelTapped() { onCancel?() } @objc private func stopTapped() { if let recordTyp…PetChat/Module/PetTalk/View/PCPetTalkRecordingOverlayView.swift:322, PetChat/Module/PetTalk/View/PCPetTalkRecordingOverlayView.swift:326typeThinking/Firebase
Talk_Guide_FinishPet Talkguard petVoiceCard.bounds.width > 0, petVoiceCard.bounds.height > 0 else { return false } return true } /// 完成首页引导后,记录本地状态并恢复顶部视频…PetChat/Module/PetTalk/PCPetTalkNewVC.swift:633-Thinking/Firebase
Talk_Guide_ShowPet TalkshouldRetryTalkGuidePresentation = false attachGuideOverlayIfNeeded() guideContainerView().layoutIfNeeded() introVideoPlayerView.…PetChat/Module/PetTalk/PCPetTalkNewVC.swift:582-Thinking/Firebase
Tap_to_RecordPet Talklet model = PCPetTalkModel() model.id = UUID().uuidString model.sourceText = text model.changeType = changeType model.createTime …PetChat/Module/PetTalk/PCPetTalkNewVC.swift:518, PetChat/Module/PetTalk/PCPetTalkNewVC.swift:1202typeThinking/Firebase
Translation_Result_Page_ShowPet TalkultPageParam: [String: Any] = [ PCAdjustEventParamKey.type.rawValue: recordType(for: changeType) ] resultPageParam.merge(vipState…PetChat/Module/PetTalk/PCVoiceRecordVC.swift:422-Thinking/Firebase
Album_Page_Next_ClickPet Thoughts.fullScreen self.present(pickerVC, animated: true) { viewModel.backAction = { [weak self, weak pickerVC] in guard let self else {…PetChat/Module/PetThoughts/PCPetThoughtsVC.swift:1592-Thinking/Firebase
pet_thought_entrance_clickPet Thoughts} /// 统一处理导航栏右侧按钮点击:空态展示引导,有会话时进入编辑。 @objc private func handleRightButtonTapped() { switch rightButtonMode { case .guide: /// 埋点:…PetChat/Module/PetThoughts/PCPetThoughtsVC.swift:712-Thinking/Firebase
Pet_Thoughts_Enter_Album_PagePet Thoughts视频;在选择达到上限时给出专属提示文案。 viewModel.onSelectionLimitReached = { [weak pickerVC] in pickerVC?.view.makeToastText(PCLocal(str: "petThoug…PetChat/Module/PetThoughts/PCPetThoughtsVC.swift:1581-Thinking/Firebase
Pet_Thoughts_Load_AgainPet Thoughtsy.featurePetThoughts, resourceId: "", soundsName: "" )) return } pendingConsumeFreeUse = true } PCReport.report(withEvent: Event(…PetChat/Module/PetThoughts/PCPetThoughtsVC.swift:2349, PetChat/Module/PetThoughts/PCPetThoughtsVC.swift:4582-Thinking/Firebase
Pet_Thoughts_Load_FailPet ThoughtsID, elapsedSeconds: elapsedSeconds, emotion: petThoughtsAnalyticsEmotion(for: humanMessageID) ) param[PCAdjustEventParamKey.failR…PetChat/Module/PetThoughts/PCPetThoughtsVC.swift:1050-Thinking/Firebase
Pet_Thoughts_Load_SuccessPet ThoughtsView.reloadData() self.scrollToMessage(with: humanMessageID, at: .top, animated: true) self.scheduleConversationSave() PCReport.r…PetChat/Module/PetThoughts/PCPetThoughtsVC.swift:2162-Thinking/Firebase
Pet_Thoughts_Mood_Date_ClickPet ThoughtsoughtsMoodHistoryClick.rawValue, param: [:])) } /// 上报 Pet Thoughts 心情历史日期点击。 private func reportPetThoughtsMoodDateClick(entry: …PetChat/Module/PetThoughts/PCPetThoughtsVC.swift:1128-Thinking/Firebase
Pet_Thoughts_Mood_History_ClickPet ThoughtsleName), PCAdjustEventParamKey.failReason.rawValue: failReason ] )) } /// 上报 Pet Thoughts 心情历史入口点击。 private func reportPetThought…PetChat/Module/PetThoughts/PCPetThoughtsVC.swift:1121-Thinking/Firebase
Pet_Thoughts_Retry_ClickPet ThoughtstyleName.rawValue: normalizedThoughtStyleName(styleName)] )) } /// 上报 Pet Thoughts 失败卡重试点击。 private func reportPetThoughtsRetryCl…PetChat/Module/PetThoughts/PCPetThoughtsVC.swift:1081styleNameThinking/Firebase
Pet_Thoughts_Save_ClickPet ThoughtsramKey.styleName.rawValue: normalizedThoughtStyleName(styleName)] )) } /// 上报 Pet Thoughts 保存点击。 private func reportPetThoughtsSa…PetChat/Module/PetThoughts/PCPetThoughtsVC.swift:1090-Thinking/Firebase
Pet_Thoughts_Share_ClickPet Thoughtsk.rawValue, param: petThoughtsActionParam(at: index) )) } /// 上报 Pet Thoughts 分享点击。 private func reportPetThoughtsShareClick(at i…PetChat/Module/PetThoughts/PCPetThoughtsVC.swift:1099-Thinking/Firebase
Pet_Thoughts_Share_Image_ResultPet Thoughtshts 分享图生成结果。 private func reportPetThoughtsShareImageResult(at index: Int, result: String, failReason: String) { let context = pe…PetChat/Module/PetThoughts/PCPetThoughtsVC.swift:1109styleName, result, qrURL, failReasonThinking/Firebase
Pet_Thoughts_Start_LoadPet ThoughtsoughtStyleName.all : [primaryStyleName] let usageTimes = nextPetThoughtsUsageTimes() let mediaType = petThoughtsMediaType(for: mo…PetChat/Module/PetThoughts/PCPetThoughtsVC.swift:1633-Thinking/Firebase
Pet_Thoughts_Style_Unlock_ClickPet Thoughtsm: message, text: text).first ?? "" } return "" } /// 上报 Pet Thoughts 风格解锁点击。 private func reportPetThoughtsStyleUnlockClick(styl…PetChat/Module/PetThoughts/PCPetThoughtsVC.swift:1072styleNameThinking/Firebase
Pet_Thoughts_Upload_Photo_ClickPet Thoughtsontext: PCVIPSubShowEntryContext( iapEntry: PCVIPIAPEntry.featurePetThoughts, resourceId: "", soundsName: "" )) return } PCReport…PetChat/Module/PetThoughts/PCPetThoughtsVC.swift:1570-Thinking/Firebase
Thought_Detail_ClickPet Thoughts= globalIndexForVisibleRow(indexPath.row) guard allMessages.indices.contains(globalIndex) else { return } guard shouldShowAnalysi…PetChat/Module/PetThoughts/PCPetThoughtsVC.swift:2832-Thinking/Firebase
Click_Bottom_Button主导航y = 0 tabBar.layer.shadowOffset = .zero tabBar.layer.shadowRadius = 0 tabBar.layer.shadowPath = nil } func handleTabDidSwitch(fro…PetChat/Module/MainTab/PCTabBarController.swift:219typeThinking/Firebase
Page_Show主导航meter index: 当前展示 tab 的索引。 private func reportPageShow(for index: Int) { guard let pageName = pageShowName(for: index) else { ret…PetChat/Module/MainTab/PCTabBarController.swift:311pageName, timeThinking/Firebase
AI_Health_Assistant_Consult_Click公共能力/// 上报症状填写页开始咨询点击。 static func reportConsult(draft: PCPetHealthDraft) { let description = draft.symptomDescription.trimmingCharac…PetChat/Module/PetCare/Model/PCPetHealthAssistantModels.swift:188bodyPart, issueTags, descriptionLengthThinking/Firebase
AI_Health_Assistant_Entry_Click公共能力ic let petCarePage = "petcare_page" static let careTopicSearch = "care_topic_search" } /// 上报 AI 健康助手入口点击。 static func reportEntr…PetChat/Module/PetCare/Model/PCPetHealthAssistantModels.swift:163entrySourceThinking/Firebase
AI_Health_Assistant_Info_Next_Click公共能力lue, param: [PCAdjustEventParamKey.entrySource.rawValue: source] )) } /// 上报宠物信息页下一步点击。 static func reportInfoNext(draft: PCPetHe…PetChat/Module/PetCare/Model/PCPetHealthAssistantModels.swift:172entrySourceThinking/Firebase
AI_Health_Assistant_Load_Fail公共能力awValue: draft.issueKeys.joined(separator: ",") ] )) } /// 上报 AI 健康助手加载失败。 static func reportLoadFail(elapsedSeconds: Int, reason…PetChat/Module/PetCare/Model/PCPetHealthAssistantModels.swift:229timeLower, failReasonThinking/Firebase
AI_Health_Assistant_Load_Success公共能力ssistantStartLoad.rawValue, param: [:] )) } /// 上报 AI 健康助手加载成功。 static func reportLoadSuccess(draft: PCPetHealthDraft, elapsedSec…PetChat/Module/PetCare/Model/PCPetHealthAssistantModels.swift:216-Thinking/Firebase
AI_Health_Assistant_Start_Load公共能力ng { guard let key else { return "" } return key == "unvaccinated" ? "not_vaccinated" : key } /// 上报 AI 健康助手开始加载。 static func rep…PetChat/Module/PetCare/Model/PCPetHealthAssistantModels.swift:207-Thinking/Firebase
Article_Click公共能力/// 上报文章点击。 static func reportArticleClick(article: PCPetCareArticle, source: String) { var param = articleParams(article) param[…PetChat/Module/PetCare/Model/PCPetCareModels.swift:285-Thinking/Firebase
Article_Collect公共能力PCReport.report(withEvent: Event(type: .other, key: PCAdjustEventID.articleShow.rawValue, param: param)) } /// 上报文章收藏操作。 static f…PetChat/Module/PetCare/Model/PCPetCareModels.swift:297-Thinking/Firebase
Article_Show公共能力/// 上报文章展示。 static func reportArticleShow(article: PCPetCareArticle, source: String) { var param = articleParams(article) param[P…PetChat/Module/PetCare/Model/PCPetCareModels.swift:292-Thinking/Firebase
ATT_Reject公共能力e: .adjust, token: "bn92oo", key: "ATT_Success")) PCReport.report(withEvent: Event(type: .other, key: "ATT_Success")) } else { PC…PetChat/Common/Tool/PCFileTool.swift:223-Thinking/Firebase
ATT_Show公共能力return } hasRequestedTrackingPermission = true let status = ATTrackingManager.trackingAuthorizationStatus switch status { case .n…PetChat/Common/Tool/PCFileTool.swift:214-Adjust
ATT_Success公共能力tatus NotificationCenter.default.post(name: .pcTrackingAuthorizationDidChange, object: nil) if status == .authorized { PCReport.r…PetChat/Common/Tool/PCFileTool.swift:220, PetChat/Common/Tool/PCFileTool.swift:221-Adjust
Care_Topic_Tab_Click公共能力e.rawValue: isEnabled ? ActionType.on : ActionType.off ])) } /// 上报 Pet Care 专题分类点击。 static func reportCareTopicTabClick(petType:…PetChat/Module/PetCare/Model/PCPetCareModels.swift:275petType, categoryThinking/Firebase
custom_Prompt_Finish公共能力type: .other, key: AnalyticsEvent.submit, param: [ "Source": result.source.rawValue, "Feedback": String(feedback.prefix(256)), "L…PetChat/Common/Managers/PCFeedbackManager/PCFeedbackManager.swift:142, PetChat/Common/Managers/PCRatingManager/PCRatingManager.swift:323Source, Feedback, LengthThinking/Firebase
custom_Prompt_Finish公共能力type: .other, key: AnalyticsEvent.submit, param: [ "Source": result.source.rawValue, "Feedback": String(feedback.prefix(256)), "L…PetChat/Common/Managers/PCFeedbackManager/PCFeedbackManager.swift:142, PetChat/Common/Managers/PCRatingManager/PCRatingManager.swift:323Source, Feedback, LengthThinking/Firebase
Daily_Tip_Action公共能力Id.rawValue: tip.tipId, PCAdjustEventParamKey.source.rawValue: source ])) } /// 上报每日小贴士弹窗操作。 static func reportDailyTipAction(tip…PetChat/Module/PetCare/Model/PCPetCareModels.swift:260actionType, tipIdThinking/Firebase
Daily_Tip_Reminder_Set公共能力Key.actionType.rawValue: actionType, PCAdjustEventParamKey.tipId.rawValue: tip.tipId ])) } /// 上报每日小贴士提醒开关操作。 static func reportD…PetChat/Module/PetCare/Model/PCPetCareModels.swift:268actionTypeThinking/Firebase
Daily_Tip_Show公共能力ect" static let close = "close" static let on = "on" static let off = "off" } /// 上报每日小贴士弹窗展示。 static func reportDailyTipShow(tip…PetChat/Module/PetCare/Model/PCPetCareModels.swift:251petType, tipId, sourceThinking/Firebase
Feedback_Close公共能力PCReport.report(withEvent: Event(type: .other, key: AnalyticsEvent.show, param: [ "Source": source.rawValue ])) } func reportFeed…PetChat/Common/Managers/PCFeedbackManager/PCFeedbackManager.swift:130, PetChat/Common/Managers/PCRatingManager/PCRatingManager.swift:307SourceThinking/Firebase
Feedback_Show公共能力feedbackView = nil view.dismiss(animated: animated) { view.removeFromSuperview() completion?() } } func reportFeedbackShow(source…PetChat/Common/Managers/PCFeedbackManager/PCFeedbackManager.swift:124, PetChat/Common/Managers/PCRatingManager/PCRatingManager.swift:297SourceThinking/Firebase
Feedback_Submit公共能力"Source": source.rawValue ])) } func reportFeedbackSubmit(result: PCFeedbackResult) { let feedback = result.content.trimmingChara…PetChat/Common/Managers/PCFeedbackManager/PCFeedbackManager.swift:137, PetChat/Common/Managers/PCRatingManager/PCRatingManager.swift:322Source, Feedback, LengthThinking/Firebase
Main_Page_Show公共能力else { return } appDelegate.window?.backgroundColor = .color_bg appDelegate.window?.rootViewController = PCTabBarController() app…PetChat/Base/PCRouter.swift:28CountryThinking/Firebase
My_Library_Show公共能力PCReport.report(withEvent: Event(type: .other, key: PCAdjustEventID.articleCollect.rawValue, param: articleParams(article))) } //…PetChat/Module/PetCare/Model/PCPetCareModels.swift:302-Thinking/Firebase
Pet_Magic_Finish_Page_Show公共能力"" ) { basePayload in var successPayload = basePayload successPayload[PCAdjustEventParamKey.time.rawValue] = elapsedTime Dispatch…PetChat/Common/Managers/ProgressManager/PCProgressManager.swift:364-Thinking/Firebase
Pet_Magic_Load_Again公共能力ad_Again`。 func reportPetMagicLoadAgainIfNeeded(using template: TemItemInfo?) { guard let template, PCTempManager.consumePetMagic…PetChat/Common/Managers/PCPhotoPickManager/View/PCPhotoPickerImageView.swift:404, PetChat/Module/PetMagic/PCPetMagicDetailVC.swift:577-Thinking/Firebase
Pet_Magic_Load_Fail公共能力dataModel.dataModel) payload[PCAdjustEventParamKey.time.rawValue] = elapsedTime payload[PCAdjustEventParamKey.reason.rawValue] = …PetChat/Common/Managers/PCPhotoPickManager/View/PCPhotoPickerImageView.swift:301, PetChat/Common/Managers/ProgressManager/PCProgressManager.swift:343, PetChat/Common/Managers/ProgressManager/PCProgressManager.swift:522-Thinking/Firebase
Pet_Magic_Load_Success公共能力= elapsedTime DispatchQueue.main.async { PCReport.report(withEvent: Event(type: .other, key: PCAdjustEventID.petMagicFinishPageSh…PetChat/Common/Managers/ProgressManager/PCProgressManager.swift:365-Thinking/Firebase
petchat.rating.dismissed.at公共能力已定义,未扫描到触发调用。PetChat/Common/Managers/PCRatingManager/PCRatingManager.swift:1-Thinking/Firebase
petchat.rating.pet_sounds.completed.count公共能力已定义,未扫描到触发调用。PetChat/Common/Managers/PCRatingManager/PCRatingManager.swift:1-Thinking/Firebase
petchat.rating.presentation.timestamps公共能力已定义,未扫描到触发调用。PetChat/Common/Managers/PCRatingManager/PCRatingManager.swift:1-Thinking/Firebase
petchat.rating.translation.guide.shown公共能力已定义,未扫描到触发调用。PetChat/Common/Managers/PCRatingManager/PCRatingManager.swift:1-Thinking/Firebase
Rating_Guide_Close公共能力PCReport.report(withEvent: Event(type: .other, key: AnalyticsEvent.show, param: [ "Source": source.rawValue ])) } func reportFeed…PetChat/Common/Managers/PCFeedbackManager/PCFeedbackManager.swift:130, PetChat/Common/Managers/PCRatingManager/PCRatingManager.swift:307SourceThinking/Firebase
Rating_Guide_Show公共能力feedbackView = nil view.dismiss(animated: animated) { view.removeFromSuperview() completion?() } } func reportFeedbackShow(source…PetChat/Common/Managers/PCFeedbackManager/PCFeedbackManager.swift:124, PetChat/Common/Managers/PCRatingManager/PCRatingManager.swift:297SourceThinking/Firebase
Rating_Guide_Submit公共能力"Source": source.rawValue ])) } func reportFeedbackSubmit(result: PCFeedbackResult) { let feedback = result.content.trimmingChara…PetChat/Common/Managers/PCFeedbackManager/PCFeedbackManager.swift:137, PetChat/Common/Managers/PCRatingManager/PCRatingManager.swift:322Source, Feedback, LengthThinking/Firebase
Rating_Prompt_Show公共能力romptType: String) { PCReport.report(withEvent: Event(type: .other, key: AnalyticsEvent.show, param: [ "Source": source.rawValue,…PetChat/Common/Managers/PCRatingManager/PCRatingManager.swift:301Source, Prompt_TypeThinking/Firebase
Loading_Show启动ert.addAction(retryAction) present(alert, animated: true) } override func viewDidAppear(_ animated: Bool) { super.viewDidAppear(a…PetChat/Module/Launch/PCLaunchVC.swift:377-Thinking/Firebase
User_Page_Reject启动) guard delegate == nil else { return } transitionToMainInterface() } @objc private func handleUnAgree() { makeToast(PCLocal(str:…PetChat/Module/Launch/PCAgreementVC.swift:178, PetChat/Module/Launch/PCAgreementVC.swift:179-Thinking/Firebase
User_Page_Show启动super.viewDidLoad() createUI() // Do any additional setup after loading the view. } override func viewDidAppear(_ animated: Bool)…PetChat/Module/Launch/PCAgreementVC.swift:30-Thinking/Firebase
User_Page_Success启动ri(with: ConstantURL.loadServerURL()) } } @objc private func handleAgree() { PCOnboardingManager.hasAcceptedAgreement = true dele…PetChat/Module/Launch/PCAgreementVC.swift:171-Thinking/Firebase
action_type埋点已定义,未扫描到触发调用。PetChat/Common/Managers/EventManager/PCAdjustEvents.swift:1-Thinking/Firebase
ad_network埋点已定义,未扫描到触发调用。PetChat/Common/Managers/EventManager/PCAdjustEvents.swift:1-Thinking/Firebase
adgroup_name埋点已定义,未扫描到触发调用。PetChat/Common/Managers/EventManager/PCAdjustEvents.swift:1-Thinking/Firebase
audio_name埋点已定义,未扫描到触发调用。PetChat/Common/Managers/EventManager/PCAdjustEvents.swift:1-Thinking/Firebase
audio_type埋点已定义,未扫描到触发调用。PetChat/Common/Managers/EventManager/PCAdjustEvents.swift:1-Thinking/Firebase
body_part埋点已定义,未扫描到触发调用。PetChat/Common/Managers/EventManager/PCAdjustEvents.swift:1-Thinking/Firebase
campaign埋点已定义,未扫描到触发调用。PetChat/Common/Managers/EventManager/PCAdjustEvents.swift:1-Thinking/Firebase
campaign_name埋点已定义,未扫描到触发调用。PetChat/Common/Managers/EventManager/PCAdjustEvents.swift:1-Thinking/Firebase
category埋点已定义,未扫描到触发调用。PetChat/Common/Managers/EventManager/PCAdjustEvents.swift:1-Thinking/Firebase
Country埋点已定义,未扫描到触发调用。PetChat/Common/Managers/EventManager/PCAdjustEvents.swift:1-Thinking/Firebase
creative_name埋点已定义,未扫描到触发调用。PetChat/Common/Managers/EventManager/PCAdjustEvents.swift:1-Thinking/Firebase
Currency埋点已定义,未扫描到触发调用。PetChat/Common/Managers/EventManager/PCAdjustEvents.swift:1-Thinking/Firebase
date埋点已定义,未扫描到触发调用。PetChat/Common/Managers/EventManager/PCAdjustEvents.swift:1-Thinking/Firebase
description_des埋点已定义,未扫描到触发调用。PetChat/Common/Managers/EventManager/PCAdjustEvents.swift:1-Thinking/Firebase
device_type埋点已定义,未扫描到触发调用。PetChat/Common/Managers/EventManager/PCAdjustEvents.swift:1-Thinking/Firebase
Domain埋点已定义,未扫描到触发调用。PetChat/Common/Managers/EventManager/PCAdjustEvents.swift:1-Thinking/Firebase
emotion埋点已定义,未扫描到触发调用。PetChat/Common/Managers/EventManager/PCAdjustEvents.swift:1-Thinking/Firebase
emotion_list埋点已定义,未扫描到触发调用。PetChat/Common/Managers/EventManager/PCAdjustEvents.swift:1-Thinking/Firebase
entry_source埋点已定义,未扫描到触发调用。PetChat/Common/Managers/EventManager/PCAdjustEvents.swift:1-Thinking/Firebase
fail_reason埋点已定义,未扫描到触发调用。PetChat/Common/Managers/EventManager/PCAdjustEvents.swift:1-Thinking/Firebase
Form埋点已定义,未扫描到触发调用。PetChat/Common/Managers/EventManager/PCAdjustEvents.swift:1-Thinking/Firebase
IAP埋点已定义,未扫描到触发调用。PetChat/Common/Managers/EventManager/PCAdjustEvents.swift:1-Thinking/Firebase
ID埋点已定义,未扫描到触发调用。PetChat/Common/Managers/EventManager/PCAdjustEvents.swift:1-Thinking/Firebase
issue_tags埋点已定义,未扫描到触发调用。PetChat/Common/Managers/EventManager/PCAdjustEvents.swift:1-Thinking/Firebase
media_type埋点已定义,未扫描到触发调用。PetChat/Common/Managers/EventManager/PCAdjustEvents.swift:1-Thinking/Firebase
mode埋点已定义,未扫描到触发调用。PetChat/Common/Managers/EventManager/PCAdjustEvents.swift:1-Thinking/Firebase
Name埋点已定义,未扫描到触发调用。PetChat/Common/Managers/EventManager/PCAdjustEvents.swift:1-Thinking/Firebase
network_name埋点已定义,未扫描到触发调用。PetChat/Common/Managers/EventManager/PCAdjustEvents.swift:1-Thinking/Firebase
number埋点已定义,未扫描到触发调用。PetChat/Common/Managers/EventManager/PCAdjustEvents.swift:1-Thinking/Firebase
order_id埋点已定义,未扫描到触发调用。PetChat/Common/Managers/EventManager/PCAdjustEvents.swift:1-Thinking/Firebase
page_name1埋点已定义,未扫描到触发调用。PetChat/Common/Managers/EventManager/PCAdjustEvents.swift:1-Thinking/Firebase
pass_time埋点已定义,未扫描到触发调用。PetChat/Common/Managers/EventManager/PCAdjustEvents.swift:1-Thinking/Firebase
pet_age_month埋点已定义,未扫描到触发调用。PetChat/Common/Managers/EventManager/PCAdjustEvents.swift:1-Thinking/Firebase
pet_age_year埋点已定义,未扫描到触发调用。PetChat/Common/Managers/EventManager/PCAdjustEvents.swift:1-Thinking/Firebase
Pet_Magic_Select_Saved_Photo埋点已定义,未扫描到触发调用。PetChat/Common/Managers/EventManager/PCAdjustEvents.swift:1-Thinking/Firebase
Pet_Num埋点已定义,未扫描到触发调用。PetChat/Common/Managers/EventManager/PCAdjustEvents.swift:1-Thinking/Firebase
pet_type埋点已定义,未扫描到触发调用。PetChat/Common/Managers/EventManager/PCAdjustEvents.swift:1-Thinking/Firebase
pet_weight埋点已定义,未扫描到触发调用。PetChat/Common/Managers/EventManager/PCAdjustEvents.swift:1-Thinking/Firebase
Price埋点已定义,未扫描到触发调用。PetChat/Common/Managers/EventManager/PCAdjustEvents.swift:1-Thinking/Firebase
qr_url埋点已定义,未扫描到触发调用。PetChat/Common/Managers/EventManager/PCAdjustEvents.swift:1-Thinking/Firebase
Reason埋点已定义,未扫描到触发调用。PetChat/Common/Managers/EventManager/PCAdjustEvents.swift:1-Thinking/Firebase
Request_Domain埋点已定义,未扫描到触发调用。PetChat/Common/Managers/EventManager/PCAdjustEvents.swift:1-Thinking/Firebase
Resource_Cover_URL埋点已定义,未扫描到触发调用。PetChat/Common/Managers/EventManager/PCAdjustEvents.swift:1-Thinking/Firebase
resource_id埋点已定义,未扫描到触发调用。PetChat/Common/Managers/EventManager/PCAdjustEvents.swift:1-Thinking/Firebase
Resource_Name埋点已定义,未扫描到触发调用。PetChat/Common/Managers/EventManager/PCAdjustEvents.swift:1-Thinking/Firebase
Resource_URL埋点已定义,未扫描到触发调用。PetChat/Common/Managers/EventManager/PCAdjustEvents.swift:1-Thinking/Firebase
result埋点已定义,未扫描到触发调用。PetChat/Common/Managers/EventManager/PCAdjustEvents.swift:1-Thinking/Firebase
Retry_Count埋点已定义,未扫描到触发调用。PetChat/Common/Managers/EventManager/PCAdjustEvents.swift:1-Thinking/Firebase
sounds_name埋点已定义,未扫描到触发调用。PetChat/Common/Managers/EventManager/PCAdjustEvents.swift:1-Thinking/Firebase
source埋点已定义,未扫描到触发调用。PetChat/Common/Managers/EventManager/PCAdjustEvents.swift:1-Thinking/Firebase
Source埋点已定义,未扫描到触发调用。PetChat/Common/Managers/EventManager/PCAdjustEvents.swift:1-Thinking/Firebase
style_name埋点已定义,未扫描到触发调用。PetChat/Common/Managers/EventManager/PCAdjustEvents.swift:1-Thinking/Firebase
Sub_Agree_Rejct埋点已定义,未扫描到触发调用。PetChat/Common/Managers/EventManager/PCAdjustEvents.swift:1-Thinking/Firebase
sub_page埋点已定义,未扫描到触发调用。PetChat/Common/Managers/EventManager/PCAdjustEvents.swift:1-Thinking/Firebase
sub_success_order_report埋点已定义,未扫描到触发调用。PetChat/Common/Managers/EventManager/PCAdjustEvents.swift:1-Thinking/Firebase
sub_success_order_report_fail埋点已定义,未扫描到触发调用。PetChat/Common/Managers/EventManager/PCAdjustEvents.swift:1-Thinking/Firebase
sub_success_order_report_success埋点已定义,未扫描到触发调用。PetChat/Common/Managers/EventManager/PCAdjustEvents.swift:1-Thinking/Firebase
text_des埋点已定义,未扫描到触发调用。PetChat/Common/Managers/EventManager/PCAdjustEvents.swift:1-Thinking/Firebase
time埋点已定义,未扫描到触发调用。PetChat/Common/Managers/EventManager/PCAdjustEvents.swift:1-Thinking/Firebase
Time埋点已定义,未扫描到触发调用。PetChat/Common/Managers/EventManager/PCAdjustEvents.swift:1-Thinking/Firebase
Times埋点已定义,未扫描到触发调用。PetChat/Common/Managers/EventManager/PCAdjustEvents.swift:1-Thinking/Firebase
tip_id埋点已定义,未扫描到触发调用。PetChat/Common/Managers/EventManager/PCAdjustEvents.swift:1-Thinking/Firebase
title埋点已定义,未扫描到触发调用。PetChat/Common/Managers/EventManager/PCAdjustEvents.swift:1-Thinking/Firebase
translate_direction埋点已定义,未扫描到触发调用。PetChat/Common/Managers/EventManager/PCAdjustEvents.swift:1-Thinking/Firebase
Type埋点已定义,未扫描到触发调用。PetChat/Common/Managers/EventManager/PCAdjustEvents.swift:1-Thinking/Firebase
vaccine_status埋点已定义,未扫描到触发调用。PetChat/Common/Managers/EventManager/PCAdjustEvents.swift:1-Thinking/Firebase
validation_result埋点已定义,未扫描到触发调用。PetChat/Common/Managers/EventManager/PCAdjustEvents.swift:1-Thinking/Firebase
video_number埋点已定义,未扫描到触发调用。PetChat/Common/Managers/EventManager/PCAdjustEvents.swift:1-Thinking/Firebase
video_time埋点已定义,未扫描到触发调用。PetChat/Common/Managers/EventManager/PCAdjustEvents.swift:1-Thinking/Firebase
voice_personality埋点已定义,未扫描到触发调用。PetChat/Common/Managers/EventManager/PCAdjustEvents.swift:1-Thinking/Firebase
X_Times埋点已定义,未扫描到触发调用。PetChat/Common/Managers/EventManager/PCAdjustEvents.swift:1-Thinking/Firebase
Adjust_Check_Start归因Finished: @escaping (PCAttributionInitialWindowResult) -> Void, onResolved: ((PCAttributionResolution) -> Void)? = nil ) { attrib…PetChat/Common/Managers/AdjustManager/AdjustManager.swift:491-Thinking/Firebase
Adjust_Get_Promote归因passTime: Int? = nil) { guard attribution.isPaidUser else { return } guard !UserDefaults.standard.bool(forKey: StorageKey.promote…PetChat/Common/Managers/AdjustManager/AdjustManager.swift:1074-Thinking/Firebase
Adjust_Get_Promote_Final归因eFinalReported) else { return } var params = promoteParams(from: attribution) params[PCAdjustEventParamKey.form.rawValue] = final…PetChat/Common/Managers/AdjustManager/AdjustManager.swift:1100-Thinking/Firebase
Adjust_Get_Promote_Server归因tServerAttribution) { guard attribution.isPaidUser else { return } guard !UserDefaults.standard.bool(forKey: StorageKey.promoteSe…PetChat/Common/Managers/AdjustManager/AdjustManager.swift:1086-Thinking/Firebase
Adjust_Get_Success归因ypeNames.contains(eventName) == false if shouldReportType { reportedSDKAttributionTypeNames.insert(eventName) } } if shouldReport…PetChat/Common/Managers/AdjustManager/AdjustManager.swift:1131passTime, adNetwork, campaignThinking/Firebase
Adjust_Init归因se) } } func registerSDK() { if register { return } register = true configOECallBackParam() Adjust.initSdk(adjustConfig) PCReport…PetChat/Common/Managers/AdjustManager/AdjustManager.swift:454-Thinking/Firebase
Restore_Click订阅erProperties ) } /// 恢复购买。 func restoreVIP(placement: String? = nil) { markPaywallUserInteractionForAnalytics() guard beginPurcha…PetChat/Module/VIP/VC/PCVIPBaseVC.swift:574-Thinking/Firebase
Restore_Fail订阅eport.report(withEvent: Event(type: .other, key: PCAdjustEventID.restoreSuccess.rawValue)) PCToastTool.show(PCLocal(str: "vip.res…PetChat/Module/VIP/VC/PCVIPAViewController.swift:375, PetChat/Module/VIP/VC/PCVIPBViewController.swift:370, PetChat/Module/VIP/VC/PCVIPCViewController.swift:382, PetChat/Module/VIP/VC/PCVIPCustomViewController.swift:517-Thinking/Firebase
Restore_Success订阅geWithFailureToastIfNeeded() { return } PCToastTool.showError(message) } } override func vipDidCompleteRestore(success: Bool, mes…PetChat/Module/VIP/VC/PCVIPAViewController.swift:370, PetChat/Module/VIP/VC/PCVIPBViewController.swift:365, PetChat/Module/VIP/VC/PCVIPCViewController.swift:377, PetChat/Module/VIP/VC/PCVIPCustomViewController.swift:512-Thinking/Firebase
Sub_Agree_Close订阅ewControlellerDidFinidsh(self, agree: true) } } @objc private func close() { dismissAnimation { [weak self] in guard let `self` =…PetChat/Module/VIP/VC/PCAgreementPopupViewController.swift:201, PetChat/Module/VIP/VC/PCVIPCustomViewController.swift:399-Thinking/Firebase
Sub_Agree_Show订阅et productID = selectedProductID { reportSubClickForContinueButton(productID: productID) } if let agree = agreementView { if agre…PetChat/Module/VIP/VC/PCVIPCustomViewController.swift:317, PetChat/Module/VIP/VC/PCVIPCustomViewController.swift:374-Thinking/Firebase
Sub_Agree_Success订阅URL(string: ConstantURL.loadMemberURL())!) } } @objc private func buttonClick() { dismissAnimation { [weak self] in guard let `se…PetChat/Module/VIP/VC/PCAgreementPopupViewController.swift:192, PetChat/Module/VIP/VC/PCVIPCustomViewController.swift:323, PetChat/Module/VIP/VC/PCVIPCustomViewController.swift:380-Thinking/Firebase
Sub_Click订阅pContinue() { markPaywallUserInteractionForAnalytics() guard let productID = selectedProductID else { return } guard beginPurchas…PetChat/Module/VIP/VC/PCVIPAViewController.swift:288, PetChat/Module/VIP/VC/PCVIPBViewController.swift:283, PetChat/Module/VIP/VC/PCVIPBaseVC.swift:1147, PetChat/Module/VIP/VC/PCVIPCViewController.swift:317-Thinking/Firebase + Adjust
Sub_Close订阅amKey.xTimes.rawValue: UserDefaults.standard.subShowTimes ] appendStyleNameIfNeeded(context.styleName, to: &param) param.merge(pa…PetChat/Module/VIP/VC/PCVIPBaseVC.swift:1181-Thinking/Firebase
Sub_Show订阅e.rawValue: price, PCAdjustEventParamKey.xTimes.rawValue: times ] appendStyleNameIfNeeded(context.styleName, to: &param) param.me…PetChat/Module/VIP/VC/PCVIPBaseVC.swift:1423, PetChat/Module/VIP/VC/PCVIPBaseVC.swift:472-Thinking/Firebase + Adjust
Sub_Success订阅amKey.xTimes.rawValue: UserDefaults.standard.subShowTimes ] appendStyleNameIfNeeded(context.styleName, to: &param) param.merge(pa…PetChat/Module/VIP/VC/PCVIPBaseVC.swift:1219-Thinking/Firebase

立即使用

打开 App Store 下载 App

立即使用