導航:首頁 > 新媒體 > 信息流sdk錯誤

信息流sdk錯誤

發布時間:2020-08-27 00:39:53

1、海康威視IVMS-4200提示取流失敗,開始重連。錯誤代碼24,。該通道不可用。

重新設置此通道的參數,一般是參數被修改

2、以下關於百度信息流競價賬戶的說法中,哪個是錯誤的

百度信息流現在做的效果是不錯的

可以考慮做做看~~

搜索競價排名目前基本上用軍螞蟻競價軟體

一個小時可以1000詞,速度這塊還行

3、游戲編程SDK打開點陣圖時出錯怎麼辦

1.根據我們在資源設計器中設計的對話框及子控制項產生的.rc文件來自動生成對話框和子控制項(如果有手動編寫.rc文件的經歷的話,知道編寫RC文件其實就是指定窗口和子控制項大小、類型、樣式等參數,對話框管理器將這些參數傳入CreateWindow函數產生窗體)
2.模態對話框直接顯示窗體,非模態對話框消息指明WS_VISIBLE屬性的話,需要調用ShowWindow來顯示窗體。
4.維護一個消息循環泵,對於模態對話框來說這個消息泵的消息不經過父窗口,所以表現為模態;對於非模態對話框這個消息泵消息經過主窗口,必須由主窗口傳給非模態對話框,表現為非模態。
3.維護一個內建的窗體過程函數,對於對話框來說會處理對話框的關閉打開及子窗口的焦點、tab等,對於子控制項也是一樣,每個子控制項會有自己類型的窗體過程函數,窗體過程函數處理子控制項的獲得或失去焦點、按下或彈起、創建等表現樣式和行為。對於對話框來說,他會開放一個對話框過程函數,讓部分消息先通過對話框管理函數處理,如果對話框過程函數不處理才交給默認的內建過程函數處理,對於子控制項來說,他們並沒有開放過程函數,而是由內建窗體函數將要處理的消息發給父窗口處理。
那麼對話框管理器完成了標准Windows窗體的產生中後半部分工作,至於設計窗口類和注冊窗口類這是由Windows自己預先做好了的,如常見的「button」、「listbox」、「edit」類等等。
一個簡要的示意圖如下
那麼既然所有的窗體(包括對話框和控制項)產生過程一樣,那麼我們就可以將對話框管理器的部分工作替換掉:
1.不使用對話框讀取.rc模板的方式,直接將參數傳遞給CreateWindow函數來創建對話框和控制項,這就是常見的動態創建控制項原理。
2.設置控制項自繪制如BS_OWNDRAW屬性,開放控制項的WM_DRAWITEM消息給父窗口,由父窗口來繪制按鈕樣式,這就是常見的控制項重繪原理。
3.替換掉內建的窗體函數,將消息傳到自定義的窗體過程函數處理,這就是常見的控制項子類化原理。
下面,為了做演示,先用通用模板創建的方式創建一個模態對話框和其子控制項,然後模板創建一個非模態對話框,在非模態對話框中使用動態創建的方式創建和模態對話框中模板創建一樣的按鈕(當然位置和大小等可能不一樣,這里只是為了說明原理故筆者並沒有去管這些細節,如果你願意完全可以把它們做的一模一樣)。
代碼太長,這里只貼出部分代碼,詳細代碼請下載演示文件
主窗口消息泵
while (GetMessage (&msg, NULL, 0, 0)){ //注意非模態對話框消息由主窗口分發 if (hDlgModeless == NULL || !IsDialogMessage(hDlgModeless, &msg)) { TranslateMessage (&msg); DispatchMessage (&msg); }}
主窗口菜單響應
case IDM_TEMPLATE: DialogBox(GetWindowLong(hwnd, GWL_HINSTANCE), IDD_TEMPLATE, hwnd, TemplateProc); break; case IDM_CREATE: hDlgModeless = CreateDialog(GetWindowLong(hwnd, GWL_HINSTANCE), MAKEINTRESOURCE(IDD_CREATE), hwnd, CreateProc); ShowWindow(hDlgModeless, SW_NORMAL);//注意非模態對話框不指明WS_VISIBLE屬性必須顯示調用ShowWindow來顯示 break;
模板創建的模態對話框對話框過程函數
BOOL CALLBACK TemplateProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam){ switch(message) { case WM_CLOSE:{EndDialog(hDlg,0);} return (TRUE); case WM_COMMAND: switch (LOWORD(wParam)) { case IDCANCEL:{SendMessage(hDlg, WM_CLOSE, 0, 0);}return (TRUE); case IDOK:{} return (TRUE); } return (FALSE); } return (FALSE);}

模板創建的非模態對話框的對話框過程函數

BOOL CALLBACK CreateProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam){ switch(message) { case WM_INITDIALOG: { //動態創建控制項子窗口 CreateWindow(TEXT("button"), TEXT("確定"), WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, 10, 10, 100, 50, hDlg, (HMENU)IDOK, GetWindowLong(hDlg, GWL_HINSTANCE), NULL); CreateWindow(TEXT("button"), TEXT("取消"), WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, 10, 100, 100, 50, hDlg, (HMENU)IDCANCEL, GetWindowLong(hDlg, GWL_HINSTANCE), NULL); } return (TRUE); case WM_CLOSE: DestroyWindow(hDlg); hDlgModeless = NULL;//注意及時將指針置0防止窗口銷毀後消窗口分發消息 return (TRUE); case WM_COMMAND: switch (LOWORD(wParam)) { case IDCANCEL: { SendMessage(hDlg, WM_CLOSE, 0, 0); } return (TRUE); case IDOK: { } return (TRUE); } return (FALSE); }
創建效果
模態對話框
非模態對話框

二者起到了相同的作用,動態創建比模板創建要靈活的多,這個深入學習請自行查找相關資料。上例中需要注意的模態對話框和非模態對話框,前者的消息不流經主窗口消息泵,後者的消息要先流經主窗口消息泵。
2.控制項重繪(WM_DRAWITEM)
寫這篇博文的初衷就是講解控制項重繪原理,自然不能少了這一內容,在剛剛提到了修改對話框管理器的行為的幾種方式,後兩種(開放WM_DRAWITEM消息和控制項子類化)都是常用的控制項重繪技巧,在這一節先講WM_DRAWITEM消息重繪,下一節講控制項子類化重繪,都是以按鈕的重繪為例來講解。
WM_DRAWITEM顧名思義當控制項需要重繪的時候發給主窗口的消息,一般在按鈕按下或彈起、獲得焦點或失去焦點、創建等時候會產生這一消息,默認是不開啟重繪消息的,如果使用模板創建按鈕必須在按鈕屬性中設置OwnDraw屬性為True,如果動態創建按鈕必須加上BS_OWNDRAW這一屬性。
下面我要重繪兩個個按鈕,按鈕是模板創建的,是默認的IDOK和IDCANCEL按鈕,希望達到的效果是
按鈕普通狀態分別為
按鈕獲得焦點分別為
按鈕按下狀態分別為
下面先貼出繪制部分代碼,再講解
BOOL CALLBACK SelfDrawProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam){ LPDRAWITEMSTRUCT pdis; HDC hdc; HDC hMemDc; static HINSTANCE hInstance; static HBITMAP hBitmapOK_D; static HBITMAP hBitmapOK_U; static HBITMAP hBitmapOK_F; static HBITMAP hBitmapCANCEL_D; static HBITMAP hBitmapCANCEL_U; static HBITMAP hBitmapCANCEL_F; static HWND hwndOk; static HWND hwndCanel; static BITMAP bm; switch(message) { case WM_INITDIALOG:{ hInstance = GetWindowLong(hDlg, GWL_HINSTANCE); hwndOk = GetDlgItem(hDlg, IDOK); hwndCanel = GetDlgItem(hDlg, IDCANCEL); hBitmapOK_D = LoadBitmap(hInstance, TEXT("image1d")); hBitmapOK_U = LoadBitmap(hInstance, TEXT("image1u")); hBitmapOK_F = LoadBitmap(hInstance, TEXT("image1f")); hBitmapCANCEL_D = LoadBitmap(hInstance, TEXT("image2d")); hBitmapCANCEL_U = LoadBitmap(hInstance, TEXT("image2u")); hBitmapCANCEL_F = LoadBitmap(hInstance, TEXT("image2f")); GetObject(hBitmapCANCEL_D, sizeof(BITMAP), (PTSTR)&bm); //調整按鈕大小和最大圖片一樣大 SetWindowPos(hwndOk, HWND_TOPMOST, 0, 0, bm.bmWidth, bm.bmHeight, SWP_NOZORDER | SWP_NOMOVE); SetWindowPos(hwndCanel, HWND_TOPMOST, 0, 0, bm.bmWidth, bm.bmHeight, SWP_NOZORDER | SWP_NOMOVE);} return (TRUE); case WM_CLOSE:{EndDialog(hDlg,0);} return (TRUE); case WM_COMMAND: switch (LOWORD(wParam)) { case IDCANCEL:{SendMessage(hDlg, WM_CLOSE, 0, 0);}return (TRUE); case IDOK:{} return (TRUE); } return (FALSE); //自繪制按鈕 case WM_DRAWITEM: //獲得繪制結構體,包含繪制的按鈕DC和當前按鈕狀態等 pdis = (LPDRAWITEMSTRUCT)lParam; if (pdis->CtlType == ODT_BUTTON)//只繪制button類型 { hdc = pdis->hDC; SaveDC(hdc);//保存DC,繪制完必須恢復默認 //繪制默認狀態 hMemDc = CreateCompatibleDC(hdc); SelectObject(hMemDc, pdis->CtlID == IDOK ? hBitmapOK_U : hBitmapCANCEL_U); BitBlt(hdc, 0, 0, bm.bmWidth, bm.bmHeight, hMemDc, 0, 0, SRCCOPY); DeleteDC(hMemDc); //繪制獲取焦點時狀態 if (pdis->itemState & ODS_FOCUS) { hMemDc = CreateCompatibleDC(hdc); SelectObject(hMemDc, pdis->CtlID == IDOK ? hBitmapOK_F : hBitmapCANCEL_F); BitBlt(hdc, 0, 0, bm.bmWidth, bm.bmHeight, hMemDc, 0, 0, SRCCOPY); DeleteDC(hMemDc); } //繪制下壓狀態 if (pdis->itemState & ODS_SELECTED) { hMemDc = CreateCompatibleDC(hdc); SelectObject(hMemDc, pdis->CtlID == IDOK ? hBitmapOK_D : hBitmapCANCEL_D); BitBlt(hdc, 0, 0, bm.bmWidth, bm.bmHeight, hMemDc, 0, 0, SRCCOPY); DeleteDC(hMemDc); } RestoreDC(hdc, -1); } return (TRUE); } return (FALSE);}

在WM_INITDIALOG函數中載入相關資源和設置按鈕大小
在WM_DRAWITEM完成主要繪制工作,獲得WM_DRAWITEM消息時獲得繪制的結構體,這個結構體包括當前要繪制的按鈕的ID、狀態等,我們主要的工作就是將對應狀態的按鈕貼上相應的點陣圖即可。
效果如下

WM_DRAWITEM消息控制項重繪是最常用的重繪技巧,在網上常見的別人封裝好的自定義控制項都是這樣的原理。
3.控制項重繪(控制項子類化)
子類化是借鑒C++的面向對象中的繼承和重載的思想,基本意思就是如果子類對消息處理了的話對應C++的重載,這時候父類就沒辦法再處理這個消息,除非人為的將消息傳遞給父類,所有的消息先流經子類再到父類,當然這一過程需要子類的配合,具體意思我們用代碼來說明。
同樣是達到上一節WM_DRAWITEM繪制的按鈕效果
我們用控制項子類化完成這一效果,貼出部分代碼,完整代碼請下載演示文件
對話框過程函數
WNDPROC btnOkOldProc, btnCancelOldProc;BOOL CALLBACK SubclassProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam){ static HWND hwndOk; static HWND hwndCanel; switch(message) { case WM_INITDIALOG:{ hwndOk = GetDlgItem(hDlg, IDOK); hwndCanel = GetDlgItem(hDlg, IDCANCEL); //窗口子類化 btnOkOldProc = SetWindowLong(hwndOk, GWL_WNDPROC, (LONG)BtnProc); btnCancelOldProc = SetWindowLong(hwndCanel, GWL_WNDPROC, (LONG)BtnProc);} return (TRUE); case WM_CLOSE:{EndDialog(hDlg,0);} return (TRUE); case WM_COMMAND: switch (LOWORD(wParam)) { case IDCANCEL:{SendMessage(hDlg, WM_CLOSE, 0, 0);}return (TRUE); case IDOK:{} return (TRUE); } return (FALSE); } return (FALSE);}

按鈕過程函數(子類)
typedef enum tagBUTTONSTATE{ BTNSTATE_DEFAULT=0, BTNSTATE_FOCUS, BTNSTATE_SELECTED}BUTTONSTATE;LRESULT CALLBACK BtnProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam){HDC hdc; HDC hMemDc;PAINTSTRUCT ps; static int id; static HINSTANCE hInstance; static HBITMAP hBitmapOK_D; static HBITMAP hBitmapOK_U; static HBITMAP hBitmapOK_F; static HBITMAP hBitmapCANCEL_D; static HBITMAP hBitmapCANCEL_U; static HBITMAP hBitmapCANCEL_F; static BITMAP bm; static BOOL bOnce = TRUE; static BUTTONSTATE btnOkState=BTNSTATE_FOCUS; static BUTTONSTATE btnCancelState=BTNSTATE_DEFAULT; id = GetWindowLong(hwnd, GWL_ID); //初次進入函數載入資源,模擬WM_CREATE if (TRUE == bOnce) { hInstance = GetWindowLong(hwnd, GWL_HINSTANCE); hBitmapOK_D = LoadBitmap(hInstance, TEXT("image1d")); hBitmapOK_U = LoadBitmap(hInstance, TEXT("image1u")); hBitmapOK_F = LoadBitmap(hInstance, TEXT("image1f")); hBitmapCANCEL_D = LoadBitmap(hInstance, TEXT("image2d")); hBitmapCANCEL_U = LoadBitmap(hInstance, TEXT("image2u")); hBitmapCANCEL_F = LoadBitmap(hInstance, TEXT("image2f")); GetObject(hBitmapCANCEL_D, sizeof(BITMAP), (PTSTR)&bm); SetWindowPos(hwnd, HWND_TOPMOST, 0, 0, bm.bmWidth, bm.bmHeight, SWP_NOZORDER | SWP_NOMOVE); bOnce = FALSE; }switch (message){case WM_CREATE: //注意這個消息不會進入return (0); case WM_PAINT:hdc = BeginPaint (hwnd, &ps); hMemDc = CreateCompatibleDC(hdc); //繪制不同狀態下的按鈕樣式 if (btnOkState == BTNSTATE_DEFAULT && id == IDOK) { SelectObject(hMemDc, hBitmapOK_U); } if(btnCancelState == BTNSTATE_DEFAULT && id==IDCANCEL) { SelectObject(hMemDc, hBitmapCANCEL_U); } if (btnOkState == BTNSTATE_FOCUS && id==IDOK) { SelectObject(hMemDc, hBitmapOK_F); } if(btnCancelState == BTNSTATE_FOCUS && id==IDCANCEL) { SelectObject(hMemDc, hBitmapCANCEL_F); } if (btnOkState == BTNSTATE_SELECTED && id==IDOK) { SelectObject(hMemDc, hBitmapOK_D); } if(btnCancelState == BTNSTATE_SELECTED && id==IDCANCEL) { SelectObject(hMemDc, hBitmapCANCEL_D); } BitBlt(hdc, 0, 0, bm.bmWidth, bm.bmHeight, hMemDc, 0, 0, SRCCOPY); DeleteDC(hMemDc);EndPaint (hwnd, &ps);return (0); case WM_SETFOCUS: if (id==IDOK) { btnOkState = BTNSTATE_FOCUS; } else { btnCancelState = BTNSTATE_FOCUS; } return (0); case WM_KILLFOCUS: if (id==IDOK) { btnOkState = BTNSTATE_DEFAULT; } else { btnCancelState = BTNSTATE_DEFAULT; } return (0); case WM_KEYDOWN: if (wParam == VK_SPACE) { if (id==IDOK) { btnOkState = BTNSTATE_SELECTED; } else { btnCancelState = BTNSTATE_SELECTED; } InvalidateRect(hwnd, NULL, TRUE); } return (0); case WM_KEYUP: if (wParam == VK_SPACE) { if (id==IDOK) { btnOkState = BTNSTATE_FOCUS; } else { btnCancelState = BTNSTATE_FOCUS; } InvalidateRect(hwnd, NULL, TRUE); } return (0); case WM_LBUTTONDOWN: SetCapture(hwnd); if (id==IDOK) { btnOkState = BTNSTATE_SELECTED; } else { btnCancelState = BTNSTATE_SELECTED; } InvalidateRect(hwnd, NULL, TRUE); return (0); case WM_LBUTTONUP: if (id==IDOK) { btnOkState = BTNSTATE_FOCUS; } else { btnCancelState = BTNSTATE_FOCUS; } InvalidateRect(hwnd, NULL, TRUE); ReleaseCapture(); return (0); case WM_DESTROY:DestroyWindow(hwnd);return (0);} return CallWindowProc (id == IDOK ? btnOkOldProc : btnCancelOldProc, hwnd, message, wParam, lParam);}

在以上代碼,我們在對話框的WM_INITDIALOG消息中強制換掉按鈕原有的內建窗體過程函數,使用我們自己的BtnProc過程函數。需要注意的是在我們換掉
按鈕原有的內建窗體過程函數的時候按鈕已經創建完成,所以如果我們在BtnProc的WM_CREATE設置斷點,程序是不會進入的。和WM_DRAWITEM一樣,我們需要按鈕的不同狀態時繪制,因為我們採用自己的BtnProc過程函數,所以我們只能自己來維護按鈕的狀態,在WM_PAINT函數中根據不同狀態繪制不同樣式的按鈕,在其他消息中處理按鈕的按下或彈起、獲得焦點、或失去焦點等狀態轉變。

創建效果如下
我們基本上模擬了WM_DRAWITEM消息重繪效果:按Tab鍵切換焦點,按Space鍵按鈕按下彈起(當然只是為了演示原理,會有一些Bug,你可以想辦法完善他們)。在上訴代碼中,我們在最後調用了原來的內建的窗體過程函數,我們處理了WM_PAINT、WM_KEYUP、WM_KEYDOWN等消息,這些消息都return (0)直接返回了,即內建的窗體過程函數沒有機會處理這些消息,其他的子類沒有處理的消息都傳給原來內建的窗體過程函數處理了,如果我們想原來的內建窗體過程函數也處理WM_PAINT,那麼將return (0)改成break即可。這就是我上面提到的子類化的實現必須依靠子類化窗體函數的配合,我們也可以將所有的消息都在子類中處理不回傳給原來的內建窗口,但是這樣的工作量太大,一般是不會這樣做的。
另外,可以看到相比於WM_DRAWITEM消息重繪,子類化實現控制項重繪工作量要大得多,當然這樣的靈活性要更大。實際上,微軟提供子類化的作用更多是為了重新定製子控制項的行為,比如說要將一組相同按鈕按下時發送一個自定義消息,這時候就可以將這些按鈕的消息子類化都先流經一個子類化窗體過程函數,然後再調用內建的窗體過程函數。

4、信息流賬戶成本保障失效怎麼辦?

如果有水信息賬戶成本保障失效,那自然就應該確定一下失效的原因,然後如何進行補救?還有如何改善情況?

5、使用信息流推廣app,為什麼效果越來越差

我覺得你得在App中接入信息流,這樣效果才好。你看現在的移動互聯網,一些現象級的App都增加了資訊信息流。其實資訊信息流可以給APP運營帶來很多好處:
1, 可以通過資訊推送提升App的活躍度和回訪度,增加用戶使用App時長和頻次,增強用戶粘性。
2, 用戶通過社交媒體分享資訊同時也促進App的推廣傳播,擴大知名度。
3, 用戶分享資訊會引導更多用戶下載使用App,增加用戶量。
4, 資訊信息流中可插入廣告實現流量變現。對於信息流廣告來說,廣告形式多樣,廣告位樣式多,廣告位豐富(用戶在App下拉瀏覽資訊時,可在資訊間隔中不斷設定廣告位);廣告親和性強,精準度高(基於用戶畫像),非常易於受眾接受。

移動互聯網的發展已進入到存量用戶爭奪的階段,App運營方式也該相應升級了,接入資訊信息流已成為各類app運營推廣必不可少的趨勢!而我發現最近互聯網新出現了一款資訊採集和智能分發產品——信鴿資訊,試用了一下,居然可讓App運營者5分鍾即可接入資訊信息流及廣告。App的運營者或開發者值得關注一下,搜索「newssdk信鴿資訊」就能找到他們的網站。
其實雖然移動互聯網在快速發展,但App的運營推廣本質並沒有變化,歸根結底依舊是真正貼心打動用戶內心所想。而通過大數據採集和分析、智能分發和推薦、互聯網營銷工具等先進的技術手段,形成資訊信息流和信息流廣告,助力App運營者准確全面有效觸及目標用戶,從而在移動互聯網存量用戶爭奪階段獲得更好的收益。

6、winsdk7.1安裝總是出現錯誤提示該怎麼辦

通過上述的應用程序平台,在已安裝程序中可以看到下圖剪頭所指的兩個應用。Microsoft Visual C++ 2010 x86 Redistributable、Microsoft Visual C++ 2010 x64 Redistributable(64位windows)。

首先,選擇「Microsoft Visual C++ 2010 x64 Redistributable」,如下圖點擊「卸載」。進行該插件的卸載。

之後,再選擇「Microsoft Visual C++ 2010 x86 Redistributable」,進入到下圖所示的頁面。點擊右側的「卸載」。

之後,進入到卸載的過程中,如下圖所示。在此期間靜靜等候即可。

當上述兩個插件都在卸載成功時,會有下圖的提示。在確保完全卸載的情況下,進行winsdk的再次安裝。(卸載是通過騰訊管家為例的截圖)

打開winsdk的安裝exe。進入到安裝的流程。

緊接著,選擇「I Agree」,之後點擊「next」。

之後,進入到安裝目錄以及例子的選擇頁面,選擇相應的安裝目錄以及實例的安裝目錄,點擊「next」。
最後,進入到安裝的過程中,靜等安裝完成即可。

7、如何解決安裝winsdk總是提示安裝失敗的情況

方法/步驟
1
通過上述的應用程序平台,在已安裝程序中可以看到下圖剪頭所指的兩個應用。Microsoft Visual C++ 2010 x86 Redistributable、Microsoft Visual C++ 2010 x64 Redistributable(64位windows)。

2
首先,選擇「Microsoft Visual C++ 2010 x64 Redistributable」,如下圖點擊「卸載」。進行該插件的卸載。

3
之後,再選擇「Microsoft Visual C++ 2010 x86 Redistributable」,進入到下圖所示的頁面。點擊右側的「卸載」。

4
之後,進入到卸載的過程中,如下圖所示。在此期間靜靜等候即可。

5
當上述兩個插件都在卸載成功時,會有下圖的提示。在確保完全卸載的情況下,進行winsdk的再次安裝。(卸載是通過騰訊管家為例的截圖)

6
打開winsdk的安裝exe。進入到安裝的流程。

7
緊接著,選擇「I Agree」,之後點擊「next」。

8
之後,進入到安裝目錄以及例子的選擇頁面,選擇相應的安裝目錄以及實例的安裝目錄,點擊「next」。

9
最後,進入到安裝的過程中,靜等安裝完成即可

8、手機上面老是出現信息流已停止運行是什麼怎麼關

若手機提示應用程序已停止,可能是手機下載的第三方軟體或者內部應用程序出現錯誤,建議您:
1.設定-查找「應用程序管理器」-(全部)-查找無法使用的應用程序-(存儲)-清除數據。
2.若是下載的第三方軟體,建議卸載該軟體重新安裝或下載安裝此軟體其他版本嘗試。
3.如果運行內置程序時也會出現已停止的提示,查看手機是否有最新固件版本,將機器升級到最新版本。
4.若仍然無法運行此應用程序,請備份手機中數據(聯系人、照片等),然後恢復出廠設置。
若問題依然存在,請您攜帶購機發票、包修卡和機器送到三星服務中心,由專業的售後工程師幫助檢測。

9、IOS 開發 微信開放平台 導入SDK 出現錯誤

導入CoreTelephony.framework試試

與信息流sdk錯誤相關的知識