哈嘍大家好,我是鵬哥。
今天是聖誕節,無心加班,也無心遊戲。那就把之前欠大家的博客給補上 —— 基於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, ui
import os
from math import ceil, floor
# 默認顯示2行3列,在點擊more後可顯示shortcuts所有內容
COLS = 3
ROWS = 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吧!