【问题标题】:Update Application Badge With WatchKit and Widget (Today Extension)?使用 WatchKit 和小部件(今日扩展)更新应用程序徽章?
【发布时间】:2016-01-28 14:24:44
【问题描述】:

在我的应用程序中,我目前使用此代码在某些事件后更新应用程序徽章:

[[UIApplication sharedApplication] scheduleLocalNotification:localNotification];

但是,无法从 WatchKit 或 Widget 调用 [UIApplication sharedApplication]。有没有办法让我的小部件通过其他方式更新应用程序徽章?

我尝试使用这样的后台获取。当我从 Xcode 明确“模拟后台获取”时,徽章会更新。但是在实际设备上,后台获取永远不会被调用?另一个想法是调用后台获取的命令?

- (void)application:(UIApplication *)application performFetchWithCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler
{
    // Background Fetch
    [[GlobalNotifications sharedInstance] setApplicationBadge];
    completionHandler(UIBackgroundFetchResultNewData);
}

感谢您对此的任何见解。

【问题讨论】:

    标签: ios objective-c watchkit ios8-today-widget today-extension


    【解决方案1】:

    你是正确的 scheduleLocalNotification 只能从 iOS 主应用程序调用。对于手表应用程序,如果您使用的是 watchOS 2,您可以告诉 iOS 应用程序使用 WatchConnectivity 在后台安排通知。我建议使用 WCSession 方法sendMessage 来安排通知。

    在 watchOS 1 中,您可以像这样使用 openParentApplication 方法:

    // On the watch extension
    [InterfaceController openParentApplication:request reply:^(NSDictionary *replyInfo, NSError *error) {
        // handle response from phone
    }];
    
    // In the AppDelegate of the phone:
    - (void)application:(UIApplication *)application handleWatchKitExtensionRequest:(NSDictionary *)userInfo reply:(void (^)(NSDictionary *))reply 
        // TODO: Schedule notification here...
        NSDictionary *response = // Your custom response
        reply(response);
    }
    

    我不知道其他类型的应用扩展程序(例如今天的扩展程序)与父应用程序进行这种通信的方式。

    【讨论】:

    • 再次感谢 lehn0058。我的应用程序正在使用 watchOS 1。小部件呢?无论如何要使用小部件和/或 watchOS 1 来做到这一点?谢谢。
    • 我更新了我的答案以包括 watchOS 1。不过,我不知道有一种方法可以使用不同类型的扩展来做到这一点。
    • 谢谢 lehn0058。那么这意味着用户无法从小部件更新徽章? (也许其他人知道?)我将为 watch OS 1 尝试这个并发布我的发现。谢谢。
    • 对后台fetch lehn0058有什么意见吗?在 Xcode 中,当我模拟后台获取时,它按预期工作,但在实际设备上没有任何反应。除非有办法强制进行后台提取?
    • 要让后台抓取工作,iOS 应用需要在后台打开。当您使用 Xcode 进行后台获取时,需要运行应用程序才能附加调试器。当您在没有附加 Xcode 的实际设备上测试应用程序时,您是否一直在后台打开应用程序?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-19
    • 2014-10-15
    • 2015-05-22
    • 1970-01-01
    • 1970-01-01
    • 2015-01-27
    • 2017-03-31
    相关资源
    最近更新 更多