如何用最简单的方法开发一个 iOS APP? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
cy18
V2EX    iOS

如何用最简单的方法开发一个 iOS APP?

  •  
  •   cy18 2019-08-29 23:06:06 +08:00 5173 次点击
    这是一个创建于 2239 天前的主题,其中的信息可能已经有所发展或是发生改变。

    在做一些手机充电相关的东西,需要记录手机的充电曲线,即以一定的间隔抓取手机电量,电压,充电状态等信息,保存到一个文件或者通过 WiFi 发送出来。

    功能非常简单,但是在 APP Store 里面找了半天还是没找到功能符合要求的 APP,大部分电池相关的应用都只能显示当前电量,偶尔有几个能显示曲线的,都没有办法导出数据,而且采集的间隔也都太长了。

    无奈想自己开发一个 APP 实现这个功能,但是之前没用 iOS 开发经验,手也没有 MAC,苹果帐号之类的东西,大概看了一下,很难绕过申请苹果开发者帐号,还得搞一台 Mac 或者黑苹果之类的。

    这个 APP 只需要在公司内部的几台测试机上运行即可,不需要上架什么的。

    我没有没有移动平台开发经验,但是 C,C++,C#,Python 之类的都搞过,用什么方法开发这样一个 APP 最简单?预计需要多久?

    PS:Android 上面这类现成的 APP 多一些,能够记录数据,但是没法导出数据,需要手动导出,但是勉强够用。如果能够用简单的办法开发出安卓、iOS 通用的 APP 那就更好了。

    18 条回复    2019-09-11 19:51:28 +08:00
    zongren
        1
    zongren  
       2019-08-29 23:24:03 +08:00
    为啥没有这样的 APP
    可能是因为没用
    cy18
        2
    cy18  
    OP
       2019-08-29 23:27:07 +08:00
    @zongren 一般人还真用不上,但是我们这边确实有用- -现在的方法是,隔 10 分钟看一下电量,手动记录……
    WenhaoWu
        3
    WenhaoWu  
       2019-08-29 23:27:17 +08:00 via Android
    Flutter 了解一下,考虑外包吗
    brickyang
        4
    brickyang  
       2019-08-29 23:33:09 +08:00 via iPhone
    只需要 iOS 的话,最简单的方法就是直接撸 Swift。Books 里有本官方免费教程《 App Development with Swift 》,踏踏实实花一两天时间跟着走一遍。

    开发者账号淘宝花点小钱搞定。

    切记欲速则不达。
    lleon
        5
    lleon  
       2019-08-29 23:43:29 +08:00 via iPad   1
    pythonista 自带的示例:

    # coding: utf-8

    '''Simple demo of using UIDevice to query the current battery state'''

    from objc_util import *

    UIDevice = ObjCClass('UIDevice')
    device = UIDevice.currentDevice()
    battery_states = {1: 'unplugged', 2: 'charging', 3: 'full'}

    device.setBatteryMonitoringEnabled_(True)
    battery_percent = device.batteryLevel() * 100
    state = device.batteryState()
    state_str = battery_states.get(state, 'unknown')
    print('Battery level: %0.1f%% (%s)' % (battery_percent, state_str))
    device.setBatteryMonitoringEnabled_(False)
    lleon
        6
    lleon  
       2019-08-29 23:47:34 +08:00 via iPad
    运行结果:
    Battery level: 52.0% (unplugged)

    稍微改下应该能满足你的需求
    Building
        7
    Building  
       2019-08-29 23:49:43 +08:00 via iPhone
    因为做不到,iOS 没有真后台,申请后台刷新会有误差。
    shouc
        8
    shouc  
       2019-08-30 07:29:46 +08:00
    React Native 最方便而且和原生感觉没区别 Flutter 毕竟还得学 Dart
    lowSiver
        9
    lowSiver  
       2019-08-30 11:45:17 +08:00
    做不到的,没有真后台,虽然可以通过一定手段保持一段时间,但是说不准就在什么时候被系统 kill 了,所以肯定不准确,没有意义
    zmlu
        10
    zmlu  
       2019-08-30 11:56:14 +08:00
    雇一个人,让他开发
    cy18
        11
    cy18  
    OP
       2019-08-30 14:03:48 +08:00 via Android
    @lowSiver 那就保持在前台?
    cy18
        12
    cy18  
    OP
       2019-08-30 14:04:12 +08:00 via Android
    @zmlu 外包估计多少钱?
    Elecoxy
        13
    Elecoxy  
       2019-08-30 14:18:58 +08:00
    想想 在开启记录之后,让它设置每隔十秒一个本地通知。然后使用通知功能可以唤起程序运行一小段代码来实现。貌似不难。建议原生 swift 或者 oc 开发,使用别的跨平台框架担心你哭。
    Building
        14
    Building  
       2019-08-30 16:22:29 +08:00 via iPhone
    @cy18 找我,几百块帮你写一个。
    cy18
        15
    cy18  
    OP
       2019-08-30 19:55:52 +08:00
    @Building 后台问题有把握解决么?
    Building
        16
    Building  
       2019-08-30 21:26:42 +08:00
    @cy18 只能保持在前台,或者通知中心,要手动刷。
    monson
        17
    monson  
       2019-09-06 15:27:51 +08:00
    换个想法,iOS 自身就有记录啊,15 分钟一次。既然是测试机,你直接越狱了在系统数据库文件里找找更容易些吧。
    Mo7878
        18
    Mo7878  
       2019-09-11 19:51:28 +08:00
    写一个播放器 24 小时后台运行也没关系
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2655 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 15:04 PVG 23:04 LAX 08:04 JFK 11:04
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86