Wie lade ich Dateien mit http / ftp auf iphone / ipad hoch? (ZB ifile, guter Leser)

8

Gibt es einen guten Rat beim Hochladen von Dateien auf das Gerät? Ich habe viele Apps gesehen, die einen HTTP-Server auf 80 oder 8080 zum Hochladen von Dateien erstellen. Bedeutet das, dass ich auch einen Server implementieren muss?

Gibt es Bibliotheken von Drittanbietern? (Vorzugsweise Open-Source- und Nicht-GPL)

EDIT: Ich werde Dateien in der App für bestimmte Geräte in einer Unternehmensumgebung aktualisieren, so dass das iPad, das Dateien von einem zentralen Server zieht, auch eine Alternative ist. Aber ich müsste Nachrichten an diese ipads senden, um sie zu bitten, diese Dateien zu holen.

    
TiansHUo 25.02.2011, 07:14
quelle

7 Antworten

2

Ich nehme an, was Sie wollen, ist eine Art automatisches Update . Eine App macht etwas auf Bestellung vom Server ohne manuelle Bedienung.

Ich kenne die Enterprise-Lizenz-spezifische Funktion von iOS nicht. Aber ich glaube, dass es solche unternehmensspezifischen APIs nicht gibt. Und wie ich weiß, automatische Aktualisierung ist fast unmöglich. Weil,

  1. Es gibt keine System-Level-Unterstützung für die automatische Aktualisierung. (noch?)
  2. Also sollte die Funktion zum Senden und Empfangen von Nachrichten in App implementiert werden.
  3. Aber keine App läuft garantiert lange im Hintergrund.
  4. Und auch Benutzer können jede App jederzeit deaktivieren.
  5. Es gibt keine Möglichkeit, Nachrichten an eine App zu senden, die nicht läuft.
  6. Auch wenn Sie senden können, gibt es keine Möglichkeit, jeden Client vom Server aus anzugehen.

Wenn Ihre App läuft, ist das Senden einer Nachricht oder das Befehlen an sie, etwas abzurufen oder zu tun, nur eine einfache Arbeit. Das Problem ist es gibt keinen normalen Weg, um sie immer am Leben zu halten. Selbst in Situationen wie OS-Neustart oder abnormaler Beendigung.

Aber es gibt eine Alternative. Nur App als VOIP-App wie Skype registrieren. Das Betriebssystem lässt die App nicht laufen, überwacht jedoch den spezifischen Socket-Port und weckt Ihre App, wenn der Socket eine Nachricht empfängt. Weitere Informationen finden Sie hier: Ссылка

Im AppStore wird eine App, die VOIP für andere Zwecke wie automatische Updates verwendet, nicht weitergegeben, aber Sie müssen sich nicht darum kümmern.

Und eine andere Möglichkeit, Nachrichten an ein Gerät zu senden, ohne eine App zu starten, ist Push-Benachrichtigung . Dies ist eine Funktion, die auf Systemebene unterstützt wird. Dies ist jedoch nicht dazu gedacht, die App zu befehligen. Dies dient zum Senden von Textnachrichten. Wenn Ihre App nicht ausgeführt wird, wird die Nachricht dem Benutzer angezeigt. Sie können den Benutzer jedoch zum Starten der App durch Senden einer Push-Benachrichtigung führen.

Als letzte Option können Sie Apple eine Funktion für die Unternehmensumgebung anfordern. Wenn Ihr Unternehmen groß genug ist, um eine Unternehmenslizenz zu erhalten, wird Apple Ihre Feature-Anfrage ernsthaft in Betracht ziehen.

Wenn Sie sich für die VOIP-Methode entschieden haben, tut mir leid, dass ich Ihnen nicht mehr helfen kann. Ich habe keine Erfahrung mit der Implementierung dieser Art von App. Aber es sollte nicht so schwer sein.

Aber der schwierigste Teil ist der Server. Es erfordert definitiv ein benutzerdefiniertes Serverprogramm, das die TCP / IP-Verbindung aufrechterhält. Regulärer HTTP-Server kann nicht verwendet werden. Weil HTTP selbst dafür ausgelegt ist, die TCP / IP-Verbindung nicht aufrecht zu erhalten. Sie müssen diese Art von Server selbst von Grund auf neu erstellen. Sie müssen mit niedrigeren TCP / IP-Übertragungen umgehen.

Es gibt ein paar Lösungen (beide frei / kommerziell) für diese Art von Server, aber keine sind beliebt, weil diese Art von Server regelmäßig vollständig angepasst werden muss. Es gibt also nichts zu verwenden oder zu teilen.

Ich glaube jedoch, dass dies die am besten geeignete Implementierung für Ihre App ist.

Wenn Sie die automatische Aktualisierung nur bei laufender Anwendung erfüllen können, können Sie sie archivieren, indem Sie den Serverstatus regelmäßig vom Client abrufen.

Dies ist einfach zu implementieren, da Sie hierfür reguläre HTTP-Server verwenden können. Der Client verbindet und lädt regelmäßig aktuelle Updates vom zentralen Server herunter. Wenn es ein neues Update gibt, holen Sie einfach und machen Sie, was Sie wollen. Und die App wird gestartet, überprüfe das Update zuerst. Verhindern Sie alle Vorgänge, bis das Update angewendet wird.

Dies ist ein normaler Weg. Die meisten Anwendungen werden mit dieser Methode erstellt. In diesem Fall müssen Sie keinen Server oder etwas Schweres implementieren.

Die Geschwindigkeit der Aktualisierung hängt jedoch vom Abrufzeitraum ab.

(Bearbeiten)

Ich könnte mich nicht um private APIs kümmern. Da Ihre App nicht für AppStore ist, können Sie private APIs frei verwenden. (Dies ist eine andere Sache mit Jailbreak. Es gibt so viele versteckte Features von der Dokumentation ausgeschlossen) Ich weiß nicht, über private APIs, aber es ist möglich, gibt es einige API, die die Unterstützung für behalten -alive der App. Allerdings ist diese Reverse Engineering Arbeit so schmerzhaft, es sei denn, Sie sind geboren, um zu hacken.

    
Eonil 05.03.2011, 08:58
quelle
3
  

Aber ich müsste Nachrichten schicken   diese Ipads, um sie zu holen   diese Dateien.

Push Notification Programming Guide

Oder mailen Sie mit einem benutzerdefinierten URL-Schema zum Starten Ihrer Anwendung.

Programmierleitfaden für iOS-Anwendungen - Implementieren benutzerdefinierter URL-Schemas

    
Kazuki Sakamoto 03.03.2011 06:18
quelle
2

Sie können versuchen, die folgende Open-Source in Ihrem Projekt zu verwenden:

Ссылка

Ссылка

    
Bistole 28.02.2011 10:58
quelle
1

Apple hat auf ihrer Website einen Beispielcode, der genau angibt, wonach Sie suchen:

Ссылка

    
Paul McCabe 01.03.2011 23:51
quelle
1

Sie haben also ein paar Optionen:

  1. Sie können Ihre App drahtlos in Ihrer Organisation verteilen und neue Inhalte als App-Updates veröffentlichen. Apple stellt diese Option ihren Enterprise-Entwicklern zur Verfügung.

      

    Drahtlose App-Verteilung

         

    Das iPhone ermöglicht es Unternehmen, firmeninterne Apps über Wi-Fi und 3G sicher zu hosten und drahtlos an ihre Mitarbeiter zu verteilen. Apps können aktualisiert werden, ohne dass Benutzer eine Verbindung zu ihren Computern herstellen müssen. Inhouse-Apps können auf jedem Webserver betrieben werden, auf den Benutzer zugreifen können. Benutzer tippen einfach auf eine URL, um Apps drahtlos zu installieren, ohne eine Verbindung zu ihren Computern herstellen zu müssen.

  2. Alternativ konfigurieren Sie die App so, dass die aktualisierten Daten abgerufen werden. Sie beschreiben das Hinzufügen eines HTTP-Servers zum iOS-Gerät, aber der Server kann keine Daten empfangen, wenn die App nicht ausgeführt wird. Angesichts Ihrer Bedürfnisse würde es wahrscheinlich besser funktionieren, stattdessen einen Webclient in Ihre App einzubetten.

    Wenn ich in Ihren Schuhen wäre (und Option # 1 nicht funktioniert hätte), würde ich ASIHTTPRequest verwenden, um das zu überprüfen mit einem Server beim Start / täglich. Wenn neue Updates vorhanden sind, kann die App den Benutzer entweder dazu auffordern, neue Datendateien herunterzuladen oder sie einfach in einem Hintergrundthread herunterzuladen.

    AKTUALISIERT: Vielleicht hätte ich deutlicher sagen sollen, wie man # 2 macht. Sie können den Download so konfigurieren, dass er nicht unterbrochen wird, wenn der Benutzer die App beendet (Sie müssen keinen Voip-Hack machen). Schau dir die Abschluss einer Aufgabe mit begrenzter Länge im Hintergrund im iOS-Programmierhandbuch.

skue 05.03.2011 05:02
quelle
1

Es gibt HTTP-Server Beispielcodes Apple und Open Source Community wie Cocoahttpserver TouchHTTPD. Sie können Datei auf den HTTP-Server auf dem iPhone hochladen.

Hier ist ein Blog und Screenshots über cocoahttpserver laufen und Datei auf iphone hochladen .

    
situee 14.03.2011 05:53
quelle
-2

Mit dem Python CGIHTTPServer können Sie einen Server in 0 Codezeilen erstellen:

%Vor%

Das Implementieren eines Skripts zum Analysieren der Eingabe und Speichern der Datei würde etwas mehr Aufwand erfordern.

[später] OK, vergiss das, Apple lässt das nicht zu. Siehe Lokaler Server auf dem iPad für das iPad mindestens.

    
jcomeau_ictx 25.02.2011 07:31
quelle