【问题标题】:Is there a way to get notified when the user drags a file into iTunes File Sharing and Sync is complete?当用户将文件拖入 iTunes 文件共享和同步完成时,有没有办法得到通知?
【发布时间】:2011-05-26 13:36:16
【问题描述】:

当我将 iPhone 插入 iTunes 并将文件拖到我的应用程序的文件共享部分时,屏幕上的应用程序会消失一会儿然后又回来。似乎此时没有触发任何应用程序委托方法,甚至没有像“转到后台,转到前台”之类的东西。

当我的应用在用户添加或删除文件的同步后返回时,我想更新屏幕。

也许有一个通知正在发送?

【问题讨论】:

    标签: iphone ios notifications itunes file-sharing


    【解决方案1】:

    此外,<MediaPlayer/MediaPlayer.h> 框架的[MPMediaLibary defaultMediaLibrary] 可以发布通知MPMediaLibraryDidChangeNotification,尤其是在您的设备与 iTunes 同步时更新媒体库时会触发该通知。

    你可以让你的对象通过添加来观察这个通知:

    #import <MediaPlayer/MediaPlayer.h>
    
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(<#selector#>:) name:MPMediaLibraryDidChangeNotification object:[MPMediaLibrary defaultMediaLibrary]];
    

    还要确保使用- (void)beginGeneratingLibraryChangeNotifications激活此通知

    【讨论】:

    • 这不适用于 iTunes 文件共享。它没有被触发。似乎只适用于相机胶卷中的东西,或者可能是视频/音乐。但不是特定于应用程序的文档。在 iOS5 的 iPad 上测试。
    • 这曾经在 iOS4 中用于 iTunes 文件共享。从 iOS5 开始,它似乎已被弃用,或者可能已损坏。
    • 添加了正确使用此通知的重要信息。但是,它很可能不适用于 iOS 5,因为同步是在没有将应用程序置于后台的情况下完成的,因此不需要通知。但它仍然在文档中,并且没有为此通知及其方法编写弃用标记
    【解决方案2】:

    在同步开始时调用- (void)applicationWillResignActive:(UIApplication *)application,在同步完成后调用- (void)applicationDidBecomeActive:(UIApplication *)application

    【讨论】:

    • 从 iOS5 开始似乎不再是这种情况了
    【解决方案3】:

    applicationWillResignActive 从 iOS 5.0 开始不起作用。

    您可以在 DocInteraction 示例应用中使用 DirectoryWatcher 类。

    【讨论】:

    • DirectoryWatcher 类不会在同步或文件传输完成时通知它的回调 - 仅在创建新文件时。传输完成时有什么方法可以通知(想想大文件)?
    • 我知道同步何时完成的诀窍是使用计时器来观察文件的大小;当它停止变化时,我认为同步已完成。
    猜你喜欢
    • 2016-05-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多