In "App" öffnen

  • So also ich halte noch mal fest:

    * in der Info.plist folgendes eintragen

    Quellcode

    1. <dict>
    2. <key>CFBundleTypeName</key>
    3. <string>Video</string>
    4. <key>LSItemContentTypes</key>
    5. <array>
    6. <string>public.movie</string>
    7. </array>
    8. <key>LSHandlerRank</key>
    9. <string>Alternate</string>
    10. </dict>
    Alles anzeigen

    Nun die Fragen...
    LSItemContentTypes: public.movie ist laut Doku alles, was Video enthält. Kann ich nicht nur bestimmte Endungen wie *.mov angeben?
    Auf Mac OS geht das mit CFBundleTypeExtensions. Laut Doku ist das aber nur für Mac OS.

    Ist das Icon-Array zwingend erforderlich? Wenn ich es nicht eintrage, müsste doch die Icon.png genommen werden...

    * im viewController.m eingeben:

    Quellcode

    1. - (void)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

    Brauche ich dann UIApplicationLaunchOptionsURLKey ?
    Wenn ja, müsste ich doch folgendermaßen weiter verfahren...

    Quellcode

    1. NSURL *url = UIApplicationLaunchOptionsURLKey;
    2. if (url) {
    3. //...
    4. }

    Ist das so richtig?

    Wenn ich nicht bestimmte Endungen (wie *.mov) angeben kann, muss ich dann hier prüfen, welche Endung die URL hat. Wie mache ich das?

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von AR.DDev ()

  • AR.DDev schrieb:

    * im viewController.m eingeben:

    Quellcode

    1. - (void)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

    Brauche ich dann UIApplicationLaunchOptionsURLKey ?
    Wenn ja, müsste ich doch folgendermaßen weiter verfahren...

    Quellcode

    1. NSURL *url = UIApplicationLaunchOptionsURLKey;
    2. if (url) {
    3. //...
    4. }

    Ist das so richtig?

    Nein, das ist nicht richtig. Die Dokumentation sagt dazu:

    The system asked your application to open a file that it claims to support. In this case, the dictionary contains a URL for the file to open. (Key: UIApplicationLaunchOptionsURLKey)

    Da steht UIApplicationLaunchOptionsURLKey ist der Key, nicht die URL.

    AR.DDev schrieb:

    Wenn ich nicht bestimmte Endungen (wie *.mov) angeben kann, muss ich dann hier prüfen, welche Endung die URL hat. Wie mache ich das?

    NSURL

    Michael
  • Wenn ich aus der Mail.app ein Video "in "App" öffne", so wird automatisch ein Ordner "Inbox" in dem Documents-Verzeichnis meiner App erstellt und darin die Datei abgelegt.
    So weit so gut, nun möchte ich die Dateinamen der Videos, die sich darin befinden in ein NSArray laden, aber vor jedem Dateinamen soll "Inbox/" stehen.

    Quellcode

    1. NSFileManager *dm = [NSFileManager defaultManager];
    2. NSArray *inboxFiles = [[dm contentsOfDirectoryAtPath:[NSString stringWithFormat:@"%@/Inbox", path] error:&error] pathsMatchingExtensions:[NSArray arrayWithObjects:@"mov", @"MOV", @"mp4", @"MP4", @"mpv", @"MPV", @"3gp", @"3GP", @"m4v", @"M4V", nil]]];


    path ist der Pfad zum Documents-Verzeichnis. error ist ein NSError.
    So bekomme ich alle Dateinamen. Ich habe versucht "Inbox/" so vor den Dateinamen zu bekommen, allerdings stürzt dabei meine App ab:

    Quellcode

    1. NSArray *inboxFiles = [NSString stringWithFormat:@"Inbox/%@", [[dm contentsOfDirectoryAtPath:[NSString stringWithFormat:@"%@/Inbox", path] error:&error] pathsMatchingExtensions:[NSArray arrayWithObjects:@"mov", @"MOV", @"mp4", @"MP4", @"mpv", @"MPV", @"3gp", @"3GP", @"m4v", @"M4V", nil]]];
  • AR.DDev schrieb:

    Wenn ich aus der Mail.app ein Video "in "App" öffne", so wird automatisch ein Ordner "Inbox" in dem Documents-Verzeichnis meiner App erstellt und darin die Datei abgelegt.
    So weit so gut, nun möchte ich die Dateinamen der Videos, die sich darin befinden in ein NSArray laden, aber vor jedem Dateinamen soll "Inbox/" stehen.

    Quellcode

    1. NSFileManager *dm = [NSFileManager defaultManager];
    2. NSArray *inboxFiles = [[dm contentsOfDirectoryAtPath:[NSString stringWithFormat:@"%@/Inbox", path] error:&error] pathsMatchingExtensions:[NSArray arrayWithObjects:@"mov", @"MOV", @"mp4", @"MP4", @"mpv", @"MPV", @"3gp", @"3GP", @"m4v", @"M4V", nil]]];


    path ist der Pfad zum Documents-Verzeichnis. error ist ein NSError.
    So bekomme ich alle Dateinamen. Ich habe versucht "Inbox/" so vor den Dateinamen zu bekommen, allerdings stürzt dabei meine App ab:

    Quellcode

    1. NSArray *inboxFiles = [NSString stringWithFormat:@"Inbox/%@", [[dm contentsOfDirectoryAtPath:[NSString stringWithFormat:@"%@/Inbox", path] error:&error] pathsMatchingExtensions:[NSArray arrayWithObjects:@"mov", @"MOV", @"mp4", @"MP4", @"mpv", @"MPV", @"3gp", @"3GP", @"m4v", @"M4V", nil]]];



    Der Unterschied zwischen NSArray und NSString ist bekannt?

    Ganz egal, was Dir vorschwebt, das geht schief.
    I would be embarrassed if they did not spy on me.
  • Es geht ja "nur" darum, jedem NSArray Eintrag ein "Inbox/" davor zu setzen.
    Wenn ihr keine einfachere Lösung für mich habt, würde ich es so machen:
    mit count zählen, wie viele Objekte sich in dem Array befinden.
    In einer for Schleife:
    [NSArray objectAtIndex:index] = [NSString stringWithFormat:@"Inbox/%@", [NSArray objectAtIndex:index]];
    aber es muss doch einfacher gehen?
  • Quellcode

    1. // dm ist ein NSFileManager, path der Pfad zum Documents-Verzeichnis, error ein NSError
    2. NSArray *inboxFiles = [[dm contentsOfDirectoryAtPath:[NSString stringWithFormat:@"%@/Inbox", path] error:&error] pathsMatchingExtensions:[NSArray arrayWithObjects:@"mov", @"MOV", @"mp4", @"MP4", @"mpv", @"MPV", @"3gp", @"3GP", @"m4v", @"M4V", nil]];
    3. int arrayIndex;
    4. int arrayCount = [inboxFiles count];
    5. for (arrayIndex = 0; arrayIndex < arrayCount; arrayIndex++) {
    6. [inboxFiles objectAtIndex:arrayIndex] = [NSString stringWithFormat:@"Inbox/%@", [inboxFiles objectAtIndex:arrayIndex]];
    7. // Leider mit dem Fehler lvalue required as left operand of assignment
    8. }
    Alles anzeigen

    Wie also objectAtIndex umbenennen? Finde dazu nichts in der Doku :(