【Python成長之路】教你在1分鐘內,打造屬於你自己的手機應用入口

哈嘍大家好,我是鵬哥。

今天是聖誕節,無心加班,也無心遊戲。那就把之前欠大家的博客給補上 —— 基於Pythonista3,打造屬於你自己的iphone入口

~~~上課鈴~~

1

寫在前面

之前我第一篇關於pythonista 3的文章就提到過,該app的作者是個大神,開發了很多有意思的樣例。今天我就教大家,如何站在大神的肩膀上,快速打造一套屬於你自己又簡便易用的應用入口。

2

效果展示

在Pythonista的組件中,點擊對應按鈕即可實現軟件入口,如:

支付寶/淘寶/微信:可以打開對應應用;

Pythonista:可運行對應腳本;

支付寶付款碼:直接顯示付款碼;

鵬哥賊優秀:點擊直接撥打對應人的電話;

短信:新建消息進行發送;微信掃碼:直接打開微信至掃碼界面 ;

 

3

知識串講(敲黑板啦)

(1)app應用如何跳轉

在實現我們應用入口之前,我們先了解下iphone中app是如何跳轉的。每個app本身之間其實是相互隔離的,這樣纔會防止app之間相互竊取信息。但是每個app有個 info.plist文件,在這個文件中會記錄url_scheme,而這個url_scheme字段就會記錄這個app被調用起來的方式。如微信對應的是“weixin://”,支付寶是“alipay://”,這就有點像每個網站都有其對應的url地址。同樣的,每個手機應用也有它特有的url_scheme。

因此,到這裏,我們至少可以知道url_scheme是app的唯一標識(如果衝突,那就無法識別了)。

另外,我在這裏補充下題外話。其實在調用應用時直接通過手機短信也能實現應用跳轉,如下圖

當對方點擊你的鏈接,就可以實現相應的功能。因此,爲什麼說陌生人短信的鏈接不要隨便點擊,因爲很有可能它的鏈接可以打開你的某些應用進行操作。

(2)如何查找一個app應用對應的url_scheme呢?

關於這個方法,網上有很多方法,我就引用一段。(當然有些app可能仍然會找不到,這個要看運氣了。)

1、用itools查看iOS設備的應用程序 

2、瀏覽(打開)‘微博’app 

3、打開Weibo.app文件夾,找到info.plist文件 

4、打開info.plist文件,找到<key>CFBundleURLSchemes</key>一行,下面一行<string>…</string>中間的都是‘微博’app的URL Scheme。

5、找到URL後複製粘貼到Launcher的自定義啓動器的URL中…並在你粘貼過來的英文後面添加一個冒號兩個斜槓, 比如   weibo://

(3)基於pythonista3 實現ui界面代碼。

要打造屬於自己的應用入口,圖標的選擇自然也是要講究的。

剛開始時爲了添加各種圖標,我一直在查每種圖標對應的字符串是怎麼樣的,比如感嘆號是alert,電池是battery,但是在pythonista中要怎麼添加呢?

其實很簡單,當你隨便添加一個圖標後,輕點下圖標字符串會彈出小圖顯示。

然後如果你再點下圖標你就會打開新世界了!如下圖,都是自帶的各類圖標、顏色、聲音,以及其對應的定義。而且你選擇點擊後,程序會自動將圖標設置成新的款式,賊好用!

 

不得不說,這個功能是個隱藏彩蛋,我也是在很偶爾的情況下才發現的。再補充下,一般像手機屏幕相對較小,圖標選擇24就夠大了(alert_24中的24表示圖標大小)。

控件顏色的設置,就相對簡單對了 ,因爲用的都是RGB。當然也可以在剛纔的“新世界”裏選擇。

(4)將運行結果中,點擊“Use in Today”,就會在iphone首頁的窗口出現各應用入口了。

4

示例代碼

其實下面這段代碼在pythonista sample/Widget/Launcher.py中也有,只是我基於自己的使用習慣,修改了實現的功能。

import appex, uiimport osfrom math import ceil, floor
# 默認顯示2行3列,在點擊more後可顯示shortcuts所有內容COLS = 3ROWS = 2
# 只需要修改shortcuts內容,其中title和url必填,其他字段會有默認值SHORTCUTS = [{'title': '支付寶', 'url': 'alipay://', 'color': '#4dd19d','icon':'iow:social_bitcoin_24'},{'title': '淘寶', 'url': 'taobao://', 'color': '#a9de31','icon':'iow:ios7_cart_24'},{'title': '微信', 'url': 'weixin:', 'color': '#ffd026','icon':'iow:chatbubbles_24'},{'title': 'Pythonista', 'url': 'pythonista3://', 'color': '#45d3e8','icon': 'iob:chevron_right_24'},{'title': '百度', 'url': 'http://baidu.com', 'color': '#ff8e13','icon':'iow:ios7_world_outline_24'},{'title': '支付寶付款碼', 'url': 'alipay://platformapi/startapp?appId=20000056', 'color': '#ff4a09','icon':'iow:ios7_keypad_32'},{'title': '鵬哥賊優秀', 'url': 'tel://12345678', 'color': '#5e96ff', 'icon': 'iow:ios7_telephone_24'},{'title': '短信', 'url': 'sms://', 'color': '#5ec0ff', 'icon': 'iow:email_32'},{'title': '微信掃碼', 'url': 'weixin://scanqrcode', 'color': '#5ec0ff', 'icon': 'iow:ios7_camera_32'},]
class LauncherView (ui.View):  def __init__(self, shortcuts, *args, **kwargs):    row_height = 110 / ROWS    super().__init__(self, frame=(0, 0, 300, ceil(len(shortcuts) / COLS) * row_height), *args, **kwargs)    self.buttons = []    # 將每個按鈕功能進行添加至UI控件中    # 如果之前icon不設置,那默認採用有compass_24圖標;color字段也一樣    for s in shortcuts:      btn = ui.Button(title=' ' + s['title'], image=ui.Image(s.get('icon', 'iow:compass_24')), name=s['url'], action=self.button_action, bg_color=s.get('color', '#55bcff'), tint_color='#fff', corner_radius=9)      self.add_subview(btn)      self.buttons.append(btn)
  # 界面按鈕大小布局  def layout(self):    bw = self.width / COLS    bh = floor(self.height / ROWS) if self.height <= 130 else floor(110 / ROWS)    for i, btn in enumerate(self.buttons):      btn.frame = ui.Rect(i%COLS * bw, i//COLS * bh, bw, bh).inset(2, 2)      btn.alpha = 1 if btn.frame.max_y < self.height else 0
  # 按鈕點擊關聯的功能  def button_action(self, sender):    import webbrowser    webbrowser.open(sender.name)    def main():  widget_name = __file__ + str(os.stat(__file__).st_mtime)  v = appex.get_widget_view()  # Optimization: Don't create a new view if the widget already shows the launcher.  if v is None or v.name != widget_name:    v = LauncherView(SHORTCUTS)    v.name = widget_name    appex.set_widget_view(v)    if __name__ == '__main__':  main()

最後再說點關於pythonista腳本的調用方式。上述示例代碼中我只是打開pythonista應用,但如何想調用test.py腳本並且帶參數a=123,對應的url_scheme如下

pythonista3://test.py?a=123

5

常用URL_Scheme補充

爲 了方便大家快速實現自己的應用入口,我把常見的一些應用url共享給大家(其實也是從網上收集的)

以下url_scheme轉自https://blog.csdn.net/wm9028/article/details/49995329

淘寶寶貝搜索 taobao://http://s.taobao.com/?q=[prompt]

淘寶店鋪搜索

taobao://http://shopsearch.taobao.com/browse/shop_search.htm?q=[prompt]

QQ的url是 mqq://

微信是weixin://

淘寶taobao://

點評dianping:// dianping://search

微博 sinaweibo://

名片全能王camcard://

weico微博weico://

支付寶alipay://

豆瓣fm:doubanradio://

微盤 sinavdisk://

網易公開課ntesopen://

美團 imeituan://

京東openapp.jdmoble://

人人renren://

我查查 wcc://

1號店wccbyihaodian://

有道詞典yddictproapp://

知乎zhihu://

優酷 youku://

ZAKER :【zakeripad://】

mdict:【mdict://】

京東hd:【openApp.jdiPad://】

易迅:【wx6964eb0b10aa369b://】;【icson://】;【wap2app://】;【com51buyiPad://】;【sinaweibosso.2217266362://】;【yixunipad://】;

wunderlist:【fb208559595824260://】;【wunderlist://】;

1password:【db-0bcm217bz8olcxj://】;

支付寶:【alipay://】;

亞馬遜:【fb115829135094686://】;

查找朋友:【grenada://】;【findmyfriends://】;【fmf1://】;

查找iphone:【fmip1://】;

homestyler:【fb110202249127916://】;

百度旅遊hd:【sinaweibosso.3772466956://】;

百度視頻hd:【BaiduVideoiPad://】;【baiduvideoipadapp://】;

百度相冊hd:【BaiDuCloudAlbumHD://】;

百度音樂hd:【tencent100518384://】;【QQ05FDC9F0://】;【wxdeda8b7428c87b0b://】;【sinaweibosso.4257500584://】;【BaiduMusicHD://】;

百度瀏覽器hd:【bdbrowser://】;

百度文庫hd:【bdwenku://】;

百度地圖hd:【sinaweibosso.675661989://】;

百度雲:【tencent100312028://】;

扇貝煉句:【wx6cf98af31a47ba29://】;

百詞斬:[wxce5d9e837051d623://】;

一個one:【clover-one://】;

launchpro:【launch://】;【launchpro://】;【launchpro-light://】;【launchpro-dial://】;【launchpro-tweet://】;【launchpro-brightness://】;【launchpro-messaging://】;【launchpro-email://】;【launchpro-dropbox://】;【launchpro-clipboard://】;【launchpro-facebook://】;【launchpro-sinaweibo://】;【launch-textexpander://】;【db-23algz5zbfx3ocs://】;【launchipad://】;

噹噹hd:【dangdanghd://】;【ddhd://】;

大衆點評hd:【dianpinghd://】;

多看閱讀:【duokan-reader://】;

藝龍旅行hd:【elongiPad://】;

圈點hd:【skitch://】;

食記hd:【wxb9a9141190826bd8://】;

印象筆記hd:【enx://】;

popAgraph:【popagraphtumblr://】;

dropbox:【db-auth://】;【dbapi-1://】;【dbapi-2://】;【dbapi-3://】;【fb210019893730://】;

goodreader:【ghttp://】;【ghttps://】;【grhttp://】;【grhttps://】;【giwhttp://】;【giwhttps://】;【gropen://】;【com.goodreader.sendtogr://】;

houzz:【fb166981393359376://】;

ifttt:【ifttt://】;

名片全能王hd:【camcard://】;【fb444471182246461hdfull://】;【CamCardHDOpenAPI://】;

萬年曆:【wx5f3a0d4653cd3485://】;

拉手團購hd:【LaShouGroupHDPay://】;

美團hd:【iMeituan://】;

evermemo:【evermemo://】;

網易雲課堂:【wangyiyunketang://】;

網易公開課:【ntesopen://】;

訂票助手2:【trainassistfree://】;

pcalc lite:【pcalc://】;

愛奇藝視頻:【QIYIHD-iPad://】;

documents:【fb435446596521711://】;

三國kill:【sgk://】;

知乎日報hd:【wb2812384762://】;【wb801442902://】;【wx81bd672c6e11bad0://】;【QQ05FE6368://】;【tencent100557672://】;【pocketapp89757://】;

扇貝新聞:【shanbaynews://】;

扇貝單詞:【shanbay://】;

扇貝單詞hd:【shanbaywordshd://】;

微盤:【sinaweibosso.2938478327://】;【sinavdisksso.2938478327://】;

新浪公開課:【wxa376b1970423b610://】;

skype:【skype://】;

什麼值得買hd:【wxed08b6c4003b1fd5://】;

搜狐視頻hd:【sohu-SViPad://】;【sohuvideohd://】;【wx91d741cfa16379bc://】;

teamviewer:【teamviewer8://】;

格志:【griddiary://】;【sumi-interactive://】;【db-d7wn1aiwz2ck3tj://】;

淘寶hd:【taobao://】;【itaobao://】;【taobaohd://】;【wx25e5e60c1e9fcd97://】;【sinaweibosso.346252009://】;【zhuzhancaipiao4ipad://】;【laiwangc6e34c6bf://】;

天貓:【tmall://】;

騰訊視頻hd:【tenvideohd://】;【tenvideo2://】;

qq通訊錄:【tencentappqqpim://】;

qq:【mqqflyticket://】;

微信:【weixin://】;【fb290293790992170://】;【wechat://】;

同步推正版HD:【tbtui://】;【tuihd://】;

航旅縱橫pro:【sinaweibosso.umetrip://】;【umetrippro://】;

mathpad:【myscriptmathpad://】;

下廚房:【wxd80665a1fc1bf282://】;

無忌論壇:【wb801384327://】;【wxe932dc78276c3c24://】;【wb1315970163://】;

雅虎天氣!:【yweather://】;

一號店:【ipadstore://】;

優酷hd:【youkuhd://】;

知乎日報:【wx841a6aace4a1dca4://】;

知乎:【zhihu://】;

dieselfacts:【dk.publishonline.dieselfacts.china://】;【dps.9aebe5a79fb04d9abddf77d97c6794dc://】;

歐陸詞典pro:【eudic://】;

拓詞:【towordsp://】;

瘦身旅程:【sina.5253876156240b2daf015c9d://】;

詞ci:【wx599b00cd734bd4a9://】;

 newsapp:// 新聞首頁

 newsapp://vote 每日一投

網易公開課: ntesopen://

網易應用: apper://

網易彩票: ntescaipiao://

網易微博: microblogging://

有道詞典: yddictProapp:// 

一淘火眼比價:QQ05FDCA9D://

支付寶信用卡還款頁面:alipays://platformapi/startapp?appId=09999999

Evernote[evernote://]

SimpleMind+[simplemind://]

MindMeister [mindmeist://]

Daybox[daybox://]

QQ同步助手[qqpim://]

福晰PDF[ boxsdk-srnspz7etrtko4y9u2tqcj8i8gzzqzm6://]

izip[db-2vxl8w8i8zibqzc://]

wps office[kingsoftofficeapp://]

CAD快速看圖:沒找到

有道[yddict://]

隨手記[fdmoney://]

全國違章查詢[mianfeijiaotongweizhang://](木倉科技出品的)

Black Tower![blacktower1://]

Stick Hero英雄難過棍子關[com.ketchapp.stickhero:/    

 

如果以上url還不能滿足你的訴求,可以到下面的這些博客裏查找。

(1)常用 url:

https://blog.csdn.net/qq_39714355/article/details/95320267

(2)支付寶內部功能調用APP的said說明:

https://blog.csdn.net/ytd7777/article/details/85240926

(3)微信常用url_scheme參數:

https://www.jianshu.com/p/8ea8d22e3d12

 

最後今天聖誕節,大家聖誕快樂呀!88,下週見!

 

~~~下課鈴~~~

 

 

點擊下方詩句,可以留言互動喔  

 

林深時見鹿,海藍時見鯨,夢醒時見你

【關注“鵬哥賊優秀”公衆號,回覆“python學習材料”,將會有python基礎學習、機器學習、數據挖掘、高級編程教程等100G視頻資料,及100+份python相關電子書免費贈送!】

掃描二維碼

    與鵬哥一起

學python吧!

發佈了38 篇原創文章 · 獲贊 17 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章