Dan*_*orm 58 ios ios8 ios-app-extension today-extension
我为我的应用程序+报价实现了一个Today小部件,它在这些Apple Docs的帮助下在通知中心显示当天的报价.我想要完成的是打开Containing App,在这种情况下是+ Quotes,当用户在他们的Today通知视图中点击+ Quotes小部件时,并不完全确定要调用它的内容,因为Calendar会在今天看.我已经尝试在标签上覆盖一个按钮,该按钮会调用
-(void)openURL:(NSURL *)URL completionHandler:(void (^)(BOOL success))completionHandler
它,然后打开我声明要打开Containing App的自定义URL方案.问题是它没有打开Containing App.

-(IBAction)myButton:(id)sender {
NSURL *customURL = [NSURL URLWithString:@"PositiveQuotes://"];
[self openURL:customURL completionHandler:nil];
}
Run Code Online (Sandbox Code Playgroud)
sun*_*ker 63
编辑:好的,这里稍作修改.我按照上面的建议和以下代码在标签上放置一个按钮就可以了:
- (IBAction) goToApp: (id)sender {
NSURL *url = [NSURL URLWithString:@"floblog://"];
[self.extensionContext openURL:url completionHandler:nil];
}
Run Code Online (Sandbox Code Playgroud)
我将它与"Touch Up Inside"活动联系起来.但是,这也会导致应用程序在用户滚动"今日"视图时启动.
=======================================
我遇到了同样的问题.但是,由于iOS 8的第一个测试版的发行说明提到,现在似乎没有解决方案:
已知问题:openURL无法在扩展中运行.
所以我想我们至少要等到beta 2.
Qua*_*ong 49
根据Apple Doc的说法,Swift 2版本
extensionContext?.openURL(NSURL(string: "foo://")!, completionHandler: nil)
Run Code Online (Sandbox Code Playgroud)
Swift 3版
extensionContext?.open(URL(string: "foo://")! , completionHandler: nil)
Run Code Online (Sandbox Code Playgroud)
并且不要忘记将自定义URL方案添加到Info.plist
ter*_*ina 28
@sunseeker的答案是好的,但它在评论中是"隐藏的".正如公认的答案所说,这是不可能的,它可能会误导访客.
这段代码有效:
- (IBAction)launchHostingApp:(id)sender
{
NSURL *pjURL = [NSURL URLWithString:@"hostingapp://home"];
[self.extensionContext openURL:pjURL completionHandler:nil];
}
Run Code Online (Sandbox Code Playgroud)
我正在使用Xcode 6.0(6A215l)和Yosemite Beta 1.
就像Apple在处理共享方案中所说:
扩展程序不直接告诉其包含的应用程序打开; 相反,它使用NSExtensionContext的openURL:completionHandler:方法告诉系统打开其包含的应用程序.当扩展使用此方法打开URL时,系统会在完成请求之前验证该请求.
| 归档时间: |
|
| 查看次数: |
37320 次 |
| 最近记录: |