我正在尝试为我的iOS和Android应用程序实现AppLinks:http://applinks.org
我做了以下事情:
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
<meta property="al:ios:app_store_id" content="581815579"/>
<meta property="al:ios:app_name" content="iNacho" />
<meta property="al:ios:url" content="inacho://default" />
Run Code Online (Sandbox Code Playgroud)
我已经通过输入类似inacho:// default的链接并点击它创建的链接来验证网址方案是否有效.WA-LA!它打开我的应用程序.
但是,当我尝试从Facebook或Quip点击链接到www.nachorater.com时,这两个应用程序都没有自动通知该网站设置了这些应用程序链接,它只是在浏览器中加载网站而不是尝试打开我的应用程序.
有人有这个工作吗?
我有一个问题,一些元标记不在我的模板的<head>部分,我修复它.
现在来自iOS Facebook应用程序的链接:http://www.nachorater.com添加了一个漂亮的小弹出窗口,可以让你打开iNacho应用程序中的URL,如下所示:
但我的动态评论链接似乎没有用,但Ming指出的Debug应用程序显示meta标签看起来正确.
例如,http://www.nachorater.com/getReview?reviewID = 6396169718595584
我发布了一个新的nacho评论链接到我的iNacho Facebook时间线,然后尝试从Facebook Mobile应用程序点击它.
它开始加载页面并弹出方便的指示器,让你在iNacho中打开应用程序,但是一旦页面加载,指示器就会消失(在我点击它之前).
从Facebook应用程序,我现在可以为我的评论触发一个inacho URL,但这只是在我消失之前点击iNacho中打开的小弹出窗口.如果我在Facebook的内置Web视图中完全加载页面,那么小弹出窗口仍会消失.
这是Applinks的问题吗?或Facebook应用程序的问题?还是设计,为什么?
我可能知道问题是什么.审核页面依次为nacho评论加载动态图像.因此,通过加载页面,它有一个img src标记,指向加载图像的动态URL.这是否被误认为某种"重定向"行为?
img标签的示例(渲染): <img width="300" src="/getReviewImage?imageID=6125868501958656"></img>
注意:还有许多其他脚本/ ajax也会动态加载(Facebook和Twitter小部件等).
这是AppLinks或Facebook Mobile应用程序中的错误吗?它不应该关心背景加载像ajax和动态图像的对象吗?
2014年7月15日 - 最新的Facebook应用程序仍在发生这种情况.当我点击从我的iNacho Facebook页面到我的iNacho网站的链接时,它会弹出选项,在页面完成加载之前在应用程序中打开它一瞬间.然后它隐藏了它.
至于Twitter应用程序,它甚至不会给我弹出一瞬间.它似乎没有认识到链接是启用了appslink.
Quip,另一方面,我粘贴了一个nacho链接,当我第一次点击它时,它进入了内置的safari,无法在我的应用程序中打开.但是我第二次点击它,它直接打开了我的应用程序.
简介:到目前为止,似乎有些应用程序正在错误地实现AppLinks Navigation部分或其他内容.Quip似乎有效,但即使是Facebook自己的应用程序似乎也没有用.
所以我得到了我的新手表(耶!).我手动将其UDID添加到开发人员门户并刷新了配置文件,我能够将存档推送到ITC进行测试,但现在我想在我的手表本身上运行调试应用程序.
我尝试将手表套件app目标设置为我的手机作为设备,它就坐在那里并运行/搅拌一段时间没有任何反应.
如果我等待足够长的时间,Xcode最终会出错
"安装Apple Watch应用程序从未完成"
有没有人碰到这个或知道我可以尝试的任何技巧?
好吧这看起来像是重复但我已经解决了围绕这个问题的所有问题,我似乎仍然无法让这个为我的应用程序工作.
我已经按照Facebook Developer网站上的iOS教程进行了操作,并完成了以下操作:
版本:Lion上的XCode 4.3.2,iOS 5.1,Facebook iOS 4.1.1
所有这些和我仍然无法让Facebook在授权时将控制权返回给我的应用程序.它只是停留在Facebook上.
代码:(注意FB_APP_ID已更改为基本编号,可在此处查看)
AppDelegate.h:
#import <UIKit/UIKit.h>
#import "FBConnect.h"
#define FB_APP_ID @"1234567890"
@interface AppDelegate : UIResponder <UIApplicationDelegate, FBSessionDelegate>
@property (strong, nonatomic) UIWindow *window;
@property (nonatomic, strong) Facebook* facebook;
@end
Run Code Online (Sandbox Code Playgroud)
AppDelegate.m:
#import "AppDelegate.h"
@implementation AppDelegate
@synthesize window = _window;
@synthesize facebook = _facebook;
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
_facebook = [[Facebook alloc] initWithAppId:FB_APP_ID andDelegate:self];
if (![_facebook isSessionValid])
{
[_facebook authorize:nil];
}
}
- (BOOL)application:(UIApplication*)application handleOpenURL:(NSURL *)url …
Run Code Online (Sandbox Code Playgroud) 我正在编写一个iOS模块,它当前以异步方式发送电子邮件(使用委托).它的使用SKPSMTPMessage
效果很好.我的问题是客户希望代码完全阻止线程,直到电子邮件发送(或无法发送).因此,他们基本上要求同步解决方案,当前它将尝试发送电子邮件,然后在发送电子邮件之前从该代码块返回.
因此,我没有尝试以SKPSMTPMessage
同步的方式重写代码(似乎没有任何同步选项),我希望找到一些方法将异步代码块包装在自己的线程中,并可能使主线程等待它完全结束(代表和所有).
我尝试了一些使用NSOperation
s的不同方法,NSThread
但也许我没有做正确的事情,因为每次我试图阻止主线程时,异步委托调用仍然似乎永远不会完成(他们回到主线程还是什么东西) ?).
任何信息甚至其他想法赞赏.
PS~我意识到这有点倒退了.在大多数情况下,异步似乎是要走的路,但这是一个特例,客户有理由想要它.
编辑:感谢所有的输入.正如其中一个答案所建议的那样,我最后只使用了一个等待代表返回的while循环,但是让runLoop继续如下:
while( ![messageDelegate hasFinishedOrFailed] ){
// Allow the run loop to do some processing of the stream
[[NSRunLoop currentRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:1]];
}
Run Code Online (Sandbox Code Playgroud) 我的应用程序一直在使用QLPreviewController来显示所有类型的文件,在iOS 5.x中,它似乎很好.
现在,在iOS 6.0中,我收到一个错误,它显示了控制器,但有一个恒定的加载指示器,从来没有实际加载任何东西.
日志中的错误是:找不到已加载代理的预览项:<QLPreviewItemProxy:0x8dbf480> - file://localhost/Users/me/Library/Application%20Support/iPhone%20Simulator/6.0/Applications/E6A58F8D-71F3-4C7A -B16E-4BA017E318E5 /文档/温度// Welcome.docx
其他人在iOS 6.0中遇到此问题或其他问题吗?或者有什么尝试的建议?我已经通过iPhone和iPad尝试了它,同时推动控制器并呈现它.
编辑:还注意到有问题的URL(他们说的那个是坏的)不仅以file://而是file:// localhost开头,而原始文件只是以实际路径开始(即:file:///用户).
我们在其他3个iOS应用中运行带有Google跟踪代码管理器的谷歌分析,但出于某种原因,这个最新的应用程序在尝试打开容器时崩溃.
这是有问题的代码行(类似于GTM的指南):
NSTimeInterval timeout = 0.1;
[TAGContainerOpener openContainerWithId:containerName
tagManager:_tagManager
openType:kTAGOpenTypePreferNonDefault
timeout:&timeout
notifier:self];
Run Code Online (Sandbox Code Playgroud)
抛出的错误:
Terminating app due to uncaught exception 'NSParseErrorException',
reason: 'Last tag: 116 should be 124'
Run Code Online (Sandbox Code Playgroud)
堆栈跟踪:
*** First throw call stack:
(
0 CoreFoundation 0x0000000104dffa75 __exceptionPreprocess + 165
1 libobjc.A.dylib 0x0000000104716bb7 objc_exception_throw + 45
2 CoreFoundation 0x0000000104dff9ad +[NSException raise:format:] + 205
3 MyApp 0x0000000102831ce6 -[TAGPBCodedInputStream readUnknownGroup:builder:] + 152
4 MyApp 0x0000000102844904 -[TAGPBUnknownFieldSet mergeFieldFrom:input:] + 283
5 MyApp 0x000000010283ceb1 -[TAGPBGeneratedMessage parseUnknownField:extensionRegistry:tag:] + 203
6 MyApp 0x000000010283cfc8 -[TAGPBGeneratedMessage …
Run Code Online (Sandbox Code Playgroud) 注意:自从Beta 1或2以来,我一直在使用Xcode7.x和MacOS Sierra.它运行得很好.我还没有碰过这台机器上的Xcode 8.
从beta 5开始,突然我无法对Xcode 7做任何事情.我启动它并打开我的工作区,一旦我将视图更改为另一个文件或项目或资产或任何东西,它就会崩溃并出现以下错误:
Process: Xcode [869]
Path: /Applications/Xcode.app/Contents/MacOS/Xcode
Identifier: com.apple.dt.Xcode
Version: 7.3.1 (10188.1)
Build Info: IDEFrameworks-10188001000000000~3
App Item ID: 497799835
App External ID: 817226719
Code Type: X86-64 (Native)
Parent Process: ??? [1]
Responsible: Xcode [869]
User ID: 501
Date/Time: 2016-08-11 11:21:13.167 -0700
OS Version: Mac OS X 10.12 (16A286a)
Report Version: 12
Anonymous UUID: BC13DBAB-4D04-3E83-CF4A-4F1FFB581BCE
Time Awake Since Boot: 250 seconds
System Integrity Protection: enabled
Crashed Thread: 0 Dispatch queue: com.apple.main-thread
Exception Type: EXC_BAD_ACCESS (SIGSEGV)
Exception …
Run Code Online (Sandbox Code Playgroud) ios ×7
objective-c ×4
xcode ×3
facebook ×2
android ×1
apple-watch ×1
applinks ×1
asynchronous ×1
crash ×1
ios6 ×1
macos-sierra ×1
meta-tags ×1
quicklook ×1
synchronous ×1
watchkit ×1
xcode-6.2 ×1
xcode7 ×1