iOSでシステム稼働時間を得る方法はありますか(Swiftを使用していますか?)私が必要とするのは、ユーザーが時間を変更することを心配することなく、時間を測定することです。 Androidの場合、起動後のミリ秒数を返すelapsedCurrentTimeMillis()
がありますが、今はiOSのようなものが必要です。ここで受け入れられた答えはGetting iOS system uptime, that doesn't pause when asleepですが、これはObjective Cのためのものです。私はそれをSwiftに必要としており、変換方法はわかりません。iOS/Swiftのシステム稼働時間の取得
答えて
純粋なSwiftソリューションを求めるときは、ObjCコードを上記の答えGetting iOS system uptime, that doesn't pause when asleepから変換しました。
func uptime() -> time_t {
var boottime = timeval()
var mib: [Int32] = [CTL_KERN, KERN_BOOTTIME]
var size = strideof(timeval)
var now = time_t()
var uptime: time_t = -1
time(&now)
if (sysctl(&mib, 2, &boottime, &size, nil, 0) != -1 && boottime.tv_sec != 0) {
uptime = now - boottime.tv_sec
}
return uptime
}
// print(uptime())
それは少しきれいに、私たちが代わりにsysctl
のsysctlbyname
を使用することができますようにするには:
// var mib: [Int32] = [CTL_KERN, KERN_BOOTTIME]
sysctlbyname("kern.boottime", &boottime, &size, nil, 0)
@ JAL ObjCとSwiftの間のsizeofの違う振る舞いをデバッグしました。それは今働きます! –
これはうまくいきますが、これはObjective-Cコードバージョンと同じ値を示しています!そして、私はプログラミングに苦労するつもりであることがわかります... – TimSim
あなたはスウィフトからにObjCコードを呼び出すことができます:Getting iOS system uptime, that doesn't pause when asleep:
print(SystemUtil().uptime());
はあなたが言及した受け入れ答えのようにObjCクラスを記述します。
インタフェースのためのSystemUtil.h
:実装のための
#import <Foundation/Foundation.h>
@interface SystemUtil : NSObject
- (time_t)uptime;
@end
SystemUtil.m
:
#import "SystemUtil.h"
#include <sys/sysctl.h>
@implementation SystemUtil
- (time_t)uptime
{
struct timeval boottime;
int mib[2] = {CTL_KERN, KERN_BOOTTIME};
size_t size = sizeof(boottime);
time_t now;
time_t uptime = -1;
(void)time(&now);
if (sysctl(mib, 2, &boottime, &size, NULL, 0) != -1 && boottime.tv_sec != 0) {
uptime = now - boottime.tv_sec;
}
return uptime;
}
@end
そして、あなたは(スウィフトからにObjCクラスを使用できるように、次の内容の<Project>-Bridge-Header.h
を含めることを忘れないでください<Project>
はプロジェクト名です):
#import "SystemUtil.h"
これは何 `ちょうど約スウィフト4.
var boottime = timeval()
var size = MemoryLayout<timeval>.stride
sysctlbyname("kern.boottime", &boottime, &size, nil, 0)
- 1. Windowsサービスの稼働時間を取得しますか?
- 2. 稼働時間が遅い
- 3. Javaのシステム(JVMではない)の稼働時間を問い合わせる
- 4. プログラムでサーバーの稼働時間を調べる
- 5. 平均稼働時間データの保存に最適なアプローチ
- 6. Excelで非稼働日の勤務時間計算を除外
- 7. Node.jsで稼働時間モニタを作成するアーキテクチャ
- 8. アプリケーション、稼働時間、ログファイルなどを監視する
- 9. 物理フォルダの取得サイトが稼働しています
- 10. iOSシステムの稼働時間を取得しています。眠っているときに休止しません。
- 11. MySQLクエリー時間を短縮する(現在は24時間稼働していますが、まだ稼働しています)
- 12. 実稼働システム上でスレッドダンプを生成する安全性
- 13. リモートウィンドウサーバーの稼働時間を監視する最も良い方法は?
- 14. Express.js Webサーバーはメモリ不足時に5分間稼働します。
- 15. Javaプログラムを24時間365日稼働させ続けるには?
- 16. Androidサービスが稼働しているマシン/サーバーの日時
- 17. newbie:実稼働サーバーデータベースのデータを含むデータベース列を取得する方法は?
- 18. OSが稼働しているシステムでDockerデーモンのDNSを設定する
- 19. プログラムでC++(ウィンドウ)でシステム起動時間を取得する
- 20. サーバの稼働率を測定する
- 21. Solr Read Timeout(実稼働環境のみ)
- 22. 実稼働環境への開発ヘルプ
- 23. 実稼働環境用のNetbeans?
- 24. TTSをバックグラウンドで常時稼働させるには?
- 25. Cでのシステム時間を測定するためのgetrusage()の取得
- 26. システム時間でのFpsアルゴリズムエラー
- 27. AutoMapperの1.1 CreateMapは、長い稼働時間の後にNullReferenceExceptionを発生させます。
- 28. PHP - 実行中のシステムに依存しない時間を取得
- 29. パフォーマンスカウンタを使用してWCFサービスの稼働時間を監視する方法はありますか?
- 30. バックグラウンドで24時間365日稼働し、バッテリの残量が少なくなるAndroidアプリケーション
でのソリューションですNSProcessInfo.processInfo()。systemUptime'? – JAL
スリープ時間は考慮されていません。たとえその間にアプリケーションがシャットダウンされても、ユーザーが時間を変更したとしても、どれくらいの時間が経過したかを確実に測定する方法が必要です。 – TimSim