主頁 > 移動端開發 > 關于青年大學習提醒方法的探討

關于青年大學習提醒方法的探討

2021-10-30 09:46:22 移動端開發

本人也是一枚苦逼的大學生,很不巧哈,接觸了相關團支書的作業哈,由于學院抓青年大學習抓的比較嚴,時不時讓團支書去更近一下同學們的進度,然后總會有那么幾個同學忘記,這周是張三,李紅,下一周可能就是王二麻子忘記做了,很不巧哈,他們的團支書剛剛學了一手粗制版的python,于是在此探討一下!!!哈哈,廢話就這么多,開始正題

首先宣告:本小白代碼,技術不是很專業,純屬分享探討,大佬勿噴!!!

在寫代碼前,我參考了相關博客的代碼,大致邏輯就是結合爬蟲技術將青年大學習后臺資料拿到進行對比,然后發郵件提醒,這個辦法可行是可行,但是本人在親測后發現還是有那么幾個好學生老是因為學習忘記看郵箱,或者關了郵箱提醒什么的,或者是發郵件時郵箱被定義為垃圾郵件或者,,,,然后我就在想,,,還有沒有其他方法,,,最后我找到了!!!不知不覺又說了一堆廢話,哈哈,第一次寫csdn 博客,嗯,,,嘻嘻!說正事啦說正事啦不然會被打啦

我結合前輩代碼經驗,用到selenium和appium相結合方法,selenium幫我將青年大學習資料獲取下來,當然看自己實際情況吧,據我所了解每個地方后臺不一樣,你可以用其他方法,只要能夠將同學們資料獲取即可,至于方式可以多樣,

from selenium import webdriver
import time
from lxml import etree
import requests
import smtplib
from email.mime.text import MIMEText
from appium import webdriver
from appium.webdriver.extensions.android.nativekey import AndroidKey
time_num = 600   #提醒間隔時間
send_time=600

fp = open('D:/青年大學習提醒/名單1.txt', 'w', encoding='utf-8')
fp.write('\n')
wd = webdriver.Chrome(executable_path='D:/chromedriver.exe')
wd.get('https://jxtw.h5yunban.cn/jxtw-qndxx/admin/login.php')
wd.find_element_by_id('LAY-user-login-username').send_keys('賬號')
time.sleep(1)
wd.find_element_by_id('LAY-user-login-password').send_keys('密碼')
wd.find_element_by_xpath('//*[@id="LAY-user-login"]/div[1]/div[2]/div[3]/button').click()
time.sleep(1)
wd.implicitly_wait(10)
wd.find_element_by_xpath('//*[@id="LAY-system-side-menu"]//a').click()
time.sleep(1)
wd.implicitly_wait(10)
i_frame = wd.find_element_by_class_name('layadmin-iframe')
wd.switch_to.frame(i_frame)
time.sleep(2)
wd.find_element_by_xpath('/html/body/div[1]/div/div/div/div[2]/div[1]/div[3]/div[1]//input').click()
wd.implicitly_wait(10)
wd.find_element_by_xpath('/html/body/div[1]/div/div/div/div[2]/div[1]/div[3]/div[1]//input').clear()
time.sleep(1)
wd.find_element_by_xpath('/html/body/div[1]/div/div/div/div[2]/div[1]/div[3]/div[1]/div/div/dl/dd[55]').click()
time.sleep(1)
wd.find_element_by_xpath('//a[1]').click()
time.sleep(1)
name_list = wd.find_elements_by_xpath('/html/body/div[1]/div/div/div/div[2]/div[2]/div/div[2]/table/tbody/tr/td[6]')
time.sleep(1)
for name in name_list:
    name_new = name.text
    fp.write(name_new + '\n')
time.sleep(1)
wd.find_element_by_xpath('//a[2]').click()
time.sleep(1)
name_list = wd.find_elements_by_xpath('/html/body/div[1]/div/div/div/div[2]/div[2]/div/div[2]/table/tbody/tr/td[6]')
time.sleep(1)
for name in name_list:
    name_new = name.text
    fp.write(name_new + '\n')

其實邏輯很簡單就是將后臺資料中已經完成了的人的名單下載下來,上邊代碼比較難看哈,由于本人 不是計算機專業的代碼追求的是能跑即可,上邊我寫的代碼主要是爬取后臺名單然后保存到名單1.txt里邊,

下面是我關于資料清洗對比那塊的代碼,主要是為了將李紅啊張三的網名啥的轉換為真實的名字啥的,太難了呀,,,

name_list = []
name_list1 = []
list_nofinish_name = []
list_nofinish_email = []
with open('D:/青年大學習提醒/名單.txt', 'r', encoding='utf_8') as fp:
    list = fp.readlines()
    for li in list:
        li_1 = li.index('\n')
        li_2 = li[0:li_1]
        name_list.append(li_2)
with open('D:/青年大學習提醒/名單1.txt', 'r', encoding='utf_8') as fp1:
    list1 = fp1.readlines()
    for li1 in list1:
        li1_1 = li1.index('\n')
        li1_2 = li1[0:li1_1]
        name_list1.append(li1_2)
i = 0
for name in name_list:
    try:
        name_list1.index(name)
        # print(f'{name}已經完成!!')
    except:
        # print(f'{name}沒有完成!!')
        list_nofinish_name.append(name)
        i = i + 1
if i == 0:
    print('檢查完畢,全體同學已經完成!!!')
else:
    print(f'檢查完畢,1班沒有完成人數為: {i}人')
    # print(list_nofinish_name)
list_email = []
with open('D:/青年大學習提醒/郵箱.txt', 'r', encoding='utf_8') as fp3:
    e_mail = fp3.readlines()
    for e in e_mail:
        lisy = e.split()
        name_1 = lisy[0][2:]
        num = lisy[1] + '@qq.com'
        list_new = [name_1, num]
        list_email.append(list_new)
name_no=[]
qq_num_no=[]
for nofinish_name in list_nofinish_name:
    for mess in list_email:
        try:
            mess.index(nofinish_name)
            # print(f'mess:{mess}')
            # print(f'nofinish_name:{nofinish_name}')
            list_nofinish_email.append(mess[1])
            e_mail_no=mess[1].replace('@qq.com','')
            qq_num_no.append(e_mail_no)
            if mess[0]=='2019041007000122':#這段代碼意思是如果遇到網名為2019041007000122就把他改為王二麻子輸出
                name_no.append('王二麻子')
                continue
            if mess[0]=='2019041007000124':
                name_no.append('李紅')
                continue
            if mess[0]=='2019041007000110':
                name_no.append('張三')
                continue
            else:

                name_no.append(mess[0])
        except:
            pass

額,,,可能比較亂哈,本人還不太喜歡用函式封裝,大家看思路即可哈哈,我的思路是將下載的名單1和自己創捷的名單進行對比篩選就可以啦.這些前輩門都有涉及的不難,

下面appium才是重頭戲

def QQ_send(QQ, text, number):
    desired_caps = {
        "platformName": "Android",
        "platformVersion": "7",
        "deviceName": "127.0.0.1:62001",
        "appPackage": "com.tencent.mobileqq",
        "appActivity": ".activity.SplashActivity",
        "noReset": True
    }
    desired_caps["unicodeKeyboard"] = "True"
    desired_caps["resetKeyboard"] = "True"
    driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)
    driver.implicitly_wait(5)
    el1 = driver.find_element_by_accessibility_id("搜索")
    el1.click()


    el2 = driver.find_element_by_id("com.tencent.mobileqq:id/et_search_keyword")
    driver.implicitly_wait(7)
    time.sleep(1)
    el2.send_keys('班級群')
    time.sleep(1)
    driver.implicitly_wait(7)
    el3 = driver.find_element_by_xpath(
        "/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.RelativeLayout/android.widget.AbsListView/android.widget.LinearLayout[2]/android.widget.LinearLayout/android.widget.LinearLayout/android.widget.RelativeLayout/android.widget.RelativeLayout/android.widget.TextView[1]")
    el3.click()

    el1 = driver.find_element_by_accessibility_id("群聊設定")
    el1.click()
    el2 = driver.find_element_by_id("com.tencent.mobileqq:id/eom")
    el2.click()
    el3 = driver.find_element_by_accessibility_id("搜索")
    el3.click()
    el4 = driver.find_element_by_id("com.tencent.mobileqq:id/et_search_keyword")
    el4.send_keys(QQ)

    el3 = driver.find_element_by_id("com.tencent.mobileqq:id/dvo")
    el3.click()
    el4 = driver.find_element_by_accessibility_id("發訊息")
    el4.click()
    for i in range(number):
        el5 = driver.find_element_by_id("com.tencent.mobileqq:id/input")
        el5.click()
        el6 = driver.find_element_by_id("com.tencent.mobileqq:id/input")
        time.sleep(1)
        el6.send_keys(text)
        driver.implicitly_wait(7)
        time.sleep(1)
        el7 = driver.find_element_by_id("com.tencent.mobileqq:id/fun_btn")
        el7.click()
    driver.implicitly_wait(3)
    driver.back()

這是我寫的封裝函式,主要定義了一個QQ_send(qq,text,number),干嘛用的捏,上邊不是已經篩選出名字了嘛,接下來就是根據這些沒有完成的同學進行在線對話框提醒,appium跟selenium差不多,在電腦上裝一個模擬器然后驅動模擬器登錄小號充當機器人即可

下邊是完整代碼:

# -*- codeing = utf-8 -*-
# @Time : 2021/10/28 0:57
# @Author :
# @File : 青年大學習QQ提醒介面.py
# @software: PyCharm
# -*- coding:utf-8 -*-
from selenium import webdriver
import time
from lxml import etree
import requests
import smtplib
from email.mime.text import MIMEText
from appium import webdriver
from appium.webdriver.extensions.android.nativekey import AndroidKey
time_num = 600   #提醒間隔時間
send_time=600

fp = open('D:/青年大學習提醒/名單1.txt', 'w', encoding='utf-8')
fp.write('\n')
wd = webdriver.Chrome(executable_path='D:/chromedriver.exe')
wd.get('https://jxtw.h5yunban.cn/jxtw-qndxx/admin/login.php')
wd.find_element_by_id('LAY-user-login-username').send_keys('賬號')
time.sleep(1)
wd.find_element_by_id('LAY-user-login-password').send_keys('密碼')
wd.find_element_by_xpath('//*[@id="LAY-user-login"]/div[1]/div[2]/div[3]/button').click()
time.sleep(1)
wd.implicitly_wait(10)
wd.find_element_by_xpath('//*[@id="LAY-system-side-menu"]//a').click()
time.sleep(1)
wd.implicitly_wait(10)
i_frame = wd.find_element_by_class_name('layadmin-iframe')
wd.switch_to.frame(i_frame)
time.sleep(2)
wd.find_element_by_xpath('/html/body/div[1]/div/div/div/div[2]/div[1]/div[3]/div[1]//input').click()
wd.implicitly_wait(10)
wd.find_element_by_xpath('/html/body/div[1]/div/div/div/div[2]/div[1]/div[3]/div[1]//input').clear()
time.sleep(1)
wd.find_element_by_xpath('/html/body/div[1]/div/div/div/div[2]/div[1]/div[3]/div[1]/div/div/dl/dd[55]').click()
time.sleep(1)
wd.find_element_by_xpath('//a[1]').click()
time.sleep(1)
name_list = wd.find_elements_by_xpath('/html/body/div[1]/div/div/div/div[2]/div[2]/div/div[2]/table/tbody/tr/td[6]')
time.sleep(1)
for name in name_list:
    name_new = name.text
    fp.write(name_new + '\n')
time.sleep(1)
wd.find_element_by_xpath('//a[2]').click()
time.sleep(1)
name_list = wd.find_elements_by_xpath('/html/body/div[1]/div/div/div/div[2]/div[2]/div/div[2]/table/tbody/tr/td[6]')
time.sleep(1)
for name in name_list:
    name_new = name.text
    fp.write(name_new + '\n')
name_list = []
name_list1 = []
list_nofinish_name = []
list_nofinish_email = []
with open('D:/青年大學習提醒/名單.txt', 'r', encoding='utf_8') as fp:
    list = fp.readlines()
    for li in list:
        li_1 = li.index('\n')
        li_2 = li[0:li_1]
        name_list.append(li_2)
with open('D:/青年大學習提醒/名單1.txt', 'r', encoding='utf_8') as fp1:
    list1 = fp1.readlines()
    for li1 in list1:
        li1_1 = li1.index('\n')
        li1_2 = li1[0:li1_1]
        name_list1.append(li1_2)
i = 0
for name in name_list:
    try:
        name_list1.index(name)
        # print(f'{name}已經完成!!')
    except:
        # print(f'{name}沒有完成!!')
        list_nofinish_name.append(name)
        i = i + 1
if i == 0:
    print('檢查完畢,全體同學已經完成!!!')
else:
    print(f'檢查完畢,1班沒有完成人數為: {i}人')
    # print(list_nofinish_name)
list_email = []
with open('D:/青年大學習提醒/郵箱.txt', 'r', encoding='utf_8') as fp3:
    e_mail = fp3.readlines()
    for e in e_mail:
        lisy = e.split()
        name_1 = lisy[0][2:]
        num = lisy[1] + '@qq.com'
        list_new = [name_1, num]
        list_email.append(list_new)
name_no=[]
qq_num_no=[]
for nofinish_name in list_nofinish_name:
    for mess in list_email:
        try:
            mess.index(nofinish_name)
            # print(f'mess:{mess}')
            # print(f'nofinish_name:{nofinish_name}')
            list_nofinish_email.append(mess[1])
            e_mail_no=mess[1].replace('@qq.com','')
            qq_num_no.append(e_mail_no)
            if mess[0]=='2019041007000122':
                name_no.append('王二麻子')
                continue
            if mess[0]=='2019041007000124':
                name_no.append('張三')
                continue
            if mess[0]=='2019041007000110':
                name_no.append('李紅')
                continue
            else:

                name_no.append(mess[0])
        except:
            pass
if len(name_no)>0:
    print(name_no)
    # print(len(name_no))
    # print(list_nofinish_email)
    # print(qq_num_no)


def QQ_send(QQ, text, number):
    desired_caps = {
        "platformName": "Android",
        "platformVersion": "7",
        "deviceName": "127.0.0.1:62001",
        "appPackage": "com.tencent.mobileqq",
        "appActivity": ".activity.SplashActivity",
        "noReset": True
    }
    desired_caps["unicodeKeyboard"] = "True"
    desired_caps["resetKeyboard"] = "True"
    driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)
    driver.implicitly_wait(5)
    el1 = driver.find_element_by_accessibility_id("搜索")
    el1.click()


    el2 = driver.find_element_by_id("com.tencent.mobileqq:id/et_search_keyword")
    driver.implicitly_wait(7)
    time.sleep(1)
    el2.send_keys('班級群')
    time.sleep(1)
    driver.implicitly_wait(7)
    el3 = driver.find_element_by_xpath(
        "/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.RelativeLayout/android.widget.AbsListView/android.widget.LinearLayout[2]/android.widget.LinearLayout/android.widget.LinearLayout/android.widget.RelativeLayout/android.widget.RelativeLayout/android.widget.TextView[1]")
    el3.click()

    el1 = driver.find_element_by_accessibility_id("群聊設定")
    el1.click()
    el2 = driver.find_element_by_id("com.tencent.mobileqq:id/eom")
    el2.click()
    el3 = driver.find_element_by_accessibility_id("搜索")
    el3.click()
    el4 = driver.find_element_by_id("com.tencent.mobileqq:id/et_search_keyword")
    el4.send_keys(QQ)

    el3 = driver.find_element_by_id("com.tencent.mobileqq:id/dvo")
    el3.click()
    el4 = driver.find_element_by_accessibility_id("發訊息")
    el4.click()
    for i in range(number):
        el5 = driver.find_element_by_id("com.tencent.mobileqq:id/input")
        el5.click()
        el6 = driver.find_element_by_id("com.tencent.mobileqq:id/input")
        time.sleep(1)
        el6.send_keys(text)
        driver.implicitly_wait(7)
        time.sleep(1)
        el7 = driver.find_element_by_id("com.tencent.mobileqq:id/fun_btn")
        el7.click()
    driver.implicitly_wait(3)
    driver.back()

text=[]
for name_no_1 in name_no:
    text_1=f'尊敬的1班{name_no_1}同學,您好:\n  請您盡快完成青年大學習的學習!!!\n  請您盡快完成青年大學習的學習!!!\n  ' \
              '請您盡快完成青年大學習的學習!!!\n   \n  \n  \n     學習青年大學習是讓每一位青年進行學習,提高思想素質,熱愛自己的國家,' \
              '關心國家大事,爭取為了國家繁榮富強而努力奮斗,學習是永無止境的,特別是趁青春年少時,更應當緊緊抓住時間,努力學習,為以后作業提供知識儲備' \
              ',永無止境的學習會在不知不覺中改變自己的命運!!!'
    text.append(text_1)

if len(list_nofinish_email) > 0:
    i=0
    for i in range(len(name_no)):
        QQ_send(QQ=qq_num_no[i],text=text[i],number=3)#number是發送訊息的條數
        print(f'已經提醒{name_no[i]}去完成青年大學習!!!')
        i + 1


主要是跟大家探討學習,這代碼還有很多改進的地方,請對一名三個月上手python非計算機專業小白手下留情

轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/341914.html

標籤:其他

上一篇:Flutter實戰之Flutter應用生命周期 AppLifecycleState淺析

下一篇:Android安全之使用root權限替代無障礙服務的方式去獲取TopActivity

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 【從零開始擼一個App】Dagger2

    Dagger2是一個IOC框架,一般用于Android平臺,第一次接觸的朋友,一定會被搞得暈頭轉向。它延續了Java平臺Spring框架代碼碎片化,注解滿天飛的傳統。嘗試將各處代碼片段串聯起來,理清思緒,真不是件容易的事。更不用說還有各版本細微的差別。 與Spring不同的是,Spring是通過反射 ......

    uj5u.com 2020-09-10 06:57:59 more
  • Flutter Weekly Issue 66

    新聞 Flutter 季度調研結果分享 教程 Flutter+FaaS一體化任務編排的思考與設計 詳解Dart中如何通過注解生成代碼 GitHub 用對了嗎?Flutter 團隊分享如何管理大型開源專案 插件 flutter-bubble-tab-indicator A Flutter librar ......

    uj5u.com 2020-09-10 06:58:52 more
  • Proguard 常用規則

    介紹 Proguard 入口,如何查看輸出,如何使用 keep 設定入口以及使用實體,如何配置壓縮,混淆,校驗等規則。

    ......

    uj5u.com 2020-09-10 06:59:00 more
  • Android 開發技術周報 Issue#292

    新聞 Android即將獲得類AirDrop功能:可向附近設備快速分享檔案 谷歌為安卓檔案管理應用引入可安全隱藏資料的Safe Folder功能 Android TV新主界面將顯示電影、電視節目和應用推薦內容 泄露的Android檔案暗示了傳說中的谷歌Pixel 5a與折疊屏新機 谷歌發布Andro ......

    uj5u.com 2020-09-10 07:00:37 more
  • AutoFitTextureView Error inflating class

    報錯: Binary XML file line #0: Binary XML file line #0: Error inflating class xxx.AutoFitTextureView 解決: <com.example.testy2.AutoFitTextureView android: ......

    uj5u.com 2020-09-10 07:00:41 more
  • 根據Uri,Cursor沒有獲取到對應的屬性

    Android: 背景:呼叫攝像頭,拍攝視頻,指定保存的地址,但是回傳的Cursor檔案,只有名稱和大小的屬性,沒有其他諸如時長,連ID屬性都沒有 使用 cursor.getInt(cursor.getColumnIndexOrThrow(MediaStore.Video.Media.DURATIO ......

    uj5u.com 2020-09-10 07:00:44 more
  • Android連載29-持久化技術

    一、持久化技術 我們平時所使用的APP產生的資料,在記憶體中都是瞬時的,會隨著斷電、關機等丟失資料,因此android系統采用了持久化技術,用于存盤這些“瞬時”資料 持久化技術包括:檔案存盤、SharedPreference存盤以及資料庫存盤,還有更復雜的SD卡記憶體儲。 二、檔案存盤 最基本存盤方式, ......

    uj5u.com 2020-09-10 07:00:47 more
  • Android Camera2Video整合到自己專案里

    背景: Android專案里呼叫攝像頭拍攝視頻,原本使用的 MediaStore.ACTION_VIDEO_CAPTURE, 后來因專案需要,改成了camera2 1.Camera2Video 官方demo有點問題,下載后,不能直接整合到專案 問題1.多次拍攝視頻崩潰 問題2.雙擊record按鈕, ......

    uj5u.com 2020-09-10 07:00:50 more
  • Android 開發技術周報 Issue#293

    新聞 谷歌為Android TV開發者提供多種新功能 Android 11將自動填表功能整合到鍵盤輸入建議中 谷歌宣布Android Auto即將支持更多的導航和數字停車應用 谷歌Pixel 5只有XL版本 搭載驍龍765G且將比Pixel 4更便宜 [圖]Wear OS將迎來重磅更新:應用啟動時間 ......

    uj5u.com 2020-09-10 07:01:38 more
  • 海豚星空掃碼投屏 Android 接收端 SDK 集成 六步驟

    掃碼投屏,開放網路,獨占設備,不需要額外下載軟體,微信掃碼,發現設備。支持標準DLNA協議,支持倍速播放。視頻,音頻,圖片投屏。好點意思。還支持自定義基于 DLNA 擴展的操作動作。好像要收費,沒體驗。 這里簡單記錄一下集成程序。 一 跟目錄的build.gradle添加私有mevan倉庫 mave ......

    uj5u.com 2020-09-10 07:01:43 more
最新发布
  • 歡迎頁輪播影片

    如圖,引導開始,球從上落下,同時淡入文字,然后文字開始輪播,最后一頁時停止,點擊進入首頁。 在來看看效果圖。 重力球先不講,主要歡迎輪播簡單實作 首先新建一個類 TextTranslationXGuideView,用于影片展示 文本是類似的,最后會有個圖片箭頭影片,布局很簡單,就是一個 TextVi ......

    uj5u.com 2023-04-20 08:40:31 more
  • 【FAQ】關于華為推送服務因營銷訊息頻次管控導致服務通訊類訊息

    一. 問題描述 使用華為推送服務下發IM訊息時,下發訊息請求成功且code碼為80000000,但是手機總是收不到訊息; 在華為推送自助分析(Beta)平臺查看發現,訊息發送觸發了頻控。 二. 問題原因及背景 2023年1月05日起,華為推送服務對咨詢營銷類訊息做了單個設備每日推送數量上限管理,具體 ......

    uj5u.com 2023-04-20 08:40:11 more
  • 歡迎頁輪播影片

    如圖,引導開始,球從上落下,同時淡入文字,然后文字開始輪播,最后一頁時停止,點擊進入首頁。 在來看看效果圖。 重力球先不講,主要歡迎輪播簡單實作 首先新建一個類 TextTranslationXGuideView,用于影片展示 文本是類似的,最后會有個圖片箭頭影片,布局很簡單,就是一個 TextVi ......

    uj5u.com 2023-04-20 08:39:36 more
  • 【FAQ】關于華為推送服務因營銷訊息頻次管控導致服務通訊類訊息

    一. 問題描述 使用華為推送服務下發IM訊息時,下發訊息請求成功且code碼為80000000,但是手機總是收不到訊息; 在華為推送自助分析(Beta)平臺查看發現,訊息發送觸發了頻控。 二. 問題原因及背景 2023年1月05日起,華為推送服務對咨詢營銷類訊息做了單個設備每日推送數量上限管理,具體 ......

    uj5u.com 2023-04-20 08:39:13 more
  • iOS從UI記憶體地址到讀取成員變數(oc/swift)

    開發除錯時,我們發現bug時常首先是從UI顯示發現例外,下一步才會去定位UI相關連的資料的。XCode有給我們提供一系列debug工具,但是很多人可能還沒有形成一套穩定的除錯流程,因此本文嘗試解決這個問題,順便提出一個暴論:UI顯示例外問題只需要兩個步驟就能完成定位作業的80%: 定位例外 UI 組 ......

    uj5u.com 2023-04-19 09:16:23 more
  • FIDE重磅更新!性能飛躍!體驗有禮!

    FIDE 開發者工具重構升級啦!實作500%性能提升,誠邀體驗! 一直以來不少開發者朋友在社區反饋,在使用 FIDE 工具的程序中,時常會遇到諸如加載不及時、代碼預覽/渲染性能不如意的情況,十分影響開發體驗。 作為技術團隊,我們深知一件趁手的開發工具對開發者的重要性,因此,在2023年開年,FinC ......

    uj5u.com 2023-04-19 09:16:15 more
  • 游戲內嵌社區服務開放,助力開發者提升玩家互動與留存

    華為 HMS Core 游戲內嵌社區服務提供快速訪問華為游戲中心論壇能力,支持玩家直接在游戲內瀏覽帖子和交流互動,助力開發者擴展內容生產和觸達的場景。 一、為什么要游戲內嵌社區? 二、游戲內嵌社區的典型使用場景 1、游戲內打開論壇 您可以在游戲內繪制論壇入口,為玩家提供沉浸式發帖、瀏覽、點贊、回帖、 ......

    uj5u.com 2023-04-19 09:15:46 more
  • iOS從UI記憶體地址到讀取成員變數(oc/swift)

    開發除錯時,我們發現bug時常首先是從UI顯示發現例外,下一步才會去定位UI相關連的資料的。XCode有給我們提供一系列debug工具,但是很多人可能還沒有形成一套穩定的除錯流程,因此本文嘗試解決這個問題,順便提出一個暴論:UI顯示例外問題只需要兩個步驟就能完成定位作業的80%: 定位例外 UI 組 ......

    uj5u.com 2023-04-19 09:14:53 more
  • FIDE重磅更新!性能飛躍!體驗有禮!

    FIDE 開發者工具重構升級啦!實作500%性能提升,誠邀體驗! 一直以來不少開發者朋友在社區反饋,在使用 FIDE 工具的程序中,時常會遇到諸如加載不及時、代碼預覽/渲染性能不如意的情況,十分影響開發體驗。 作為技術團隊,我們深知一件趁手的開發工具對開發者的重要性,因此,在2023年開年,FinC ......

    uj5u.com 2023-04-19 09:14:08 more
  • 游戲內嵌社區服務開放,助力開發者提升玩家互動與留存

    華為 HMS Core 游戲內嵌社區服務提供快速訪問華為游戲中心論壇能力,支持玩家直接在游戲內瀏覽帖子和交流互動,助力開發者擴展內容生產和觸達的場景。 一、為什么要游戲內嵌社區? 二、游戲內嵌社區的典型使用場景 1、游戲內打開論壇 您可以在游戲內繪制論壇入口,為玩家提供沉浸式發帖、瀏覽、點贊、回帖、 ......

    uj5u.com 2023-04-19 09:08:34 more