我正在尝试处理UIApplication Notifications以在当前打开的视图中获取URL Schemes.我尝试了几个通知,但我不知道哪个对象包含URL Schemes.
NSNotificationCenter *nc = [NSNotificationCenter defaultCenter];
//[nc addObserver:self selector:@selector(DocumentToDropboxDelegate) name:UIApplicationWillResignActiveNotification object:nil];
[nc addObserver:self selector:@selector(DocumentToDropboxDelegate) name:UIApplicationDidFinishLaunchingNotification object:nil];
Run Code Online (Sandbox Code Playgroud)
有人pelase可以帮助我解决这个问题.
我正在为我的某个应用程序实现自定义URL方案,但无法使其正常运行.
我将这些行添加到我的Info.plist中:
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleURLName</key>
<string>MyApp URL</string>
<key>CFBundleURLSchemes</key>
<array>
<string>myscheme</string>
</array>
</dict>
</array>
Run Code Online (Sandbox Code Playgroud)
在我的应用程序委托中,我在ApplicationDidFinishedLaunching中安装事件处理程序:
NSAppleEventManager *appleEventManager = [NSAppleEventManager sharedAppleEventManager];
[appleEventManager setEventHandler:self andSelector:@selector(handleGetURLEvent:withReplyEvent:) forEventClass:kInternetEventClass andEventID:kAEGetURL];
Run Code Online (Sandbox Code Playgroud)
但是当我点击带有URL的链接时,不会调用该方法."myscheme://测试"
- (void)handleGetURLEvent:(NSAppleEventDescriptor *)event
withReplyEvent:(NSAppleEventDescriptor *)replyEvent {
// Extract the URL from the Apple event and handle it here.
NSString* url = [[event paramDescriptorForKeyword:keyDirectObject] stringValue];
NSLog(@"%@", url);
}
Run Code Online (Sandbox Code Playgroud)
我错过了什么?
我正在我的应用程序中测试自定义URL方案,我想添加一个调用该URL的主屏幕图标。每当我请求自定义URL时,它都会打开我的应用程序,然后将Safari的地址栏还原为先前显示的URL。
我试图通过编辑另一个URL的属性来解决这个问题,例如
但这失败了,因为您无法编辑分配给主屏幕应用程序的URL。
作为后备,我考虑只为应用程序添加书签,因此我尝试为网站添加书签,然后按如下所示编辑URL:
但这失败了,因为在iOS模拟器上,您无法编辑书签的URL(尽管由于某些原因您可以在设备上执行此操作)。
更新:正如tkanzakic指出的那样,您可以编辑用户添加的书签,而不能编辑预定义的书签
理想情况下,我想要一个主屏幕应用程序,但可以选择书签。
另外,由于防火墙的限制,我无法将此设备连接到我的Apple帐户,这意味着我也无法同步Safari书签。
所以我从图搜索中得到这些数据:https: //graph.facebook.com/search?q = watersmelon
其中包含帖子ID和用户ID.如何使用它来启动Facebook iOS应用程序并使应用程序转到该特定帖子?
来自wiki.akosma.com/IPhone_URL_Schemes的URL方案不适用于此.
点击链接时我需要打开我的应用程序.为此,我读到我必须使用URL方案.该链接必须具有myapp://参数形式.
我阅读了关于这个主题的每篇文章,但是当我发送一封带有"myapp:// addUser /?id = 22"的电子邮件并且我从chrome(在我的手机上)打开时,它无法点击.
我的清单:
<activity
android:name="com.example.SplashActivity"
android:label="@string/app_name"
android:screenOrientation="portrait" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="myapp" android:host="com.example"/>
</intent-filter>
</activity>
Run Code Online (Sandbox Code Playgroud)
我的课:
公共类SplashActivity扩展FragmentActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_splash);
Intent intent = getIntent();
if (Intent.ACTION_VIEW.equals(intent.getAction())) {
Uri uri = intent.getData();
String id = uri.getQueryParameter("id");
}
}
Run Code Online (Sandbox Code Playgroud)
要测试代码的邮件内容:
myapp://addUser/?id=22
Run Code Online (Sandbox Code Playgroud)
参考链接:
如何通过在Android OS中的浏览器中调用URL来注册一些URL命名空间(myapp://app.start/)来访问您的程序?
https://legacy.madewithmarmalade.com/devnet/forum/custom-url-scheme-primarily-android-3
UPDATE
我认为问题是邮件正文,但我不知道如何测试它.
如何使用url方案在facebook ios应用程序中打开facebook帖子?
像"fb:// post /"id""一样,我得到一个东西
但它不起作用,它只是打开Facebook应用程序.
我的iOS应用程序(用Swift和React Native编写)有一个自定义url方案,允许我从例如Safari这样的appappscheme:// https://www.mywebsite.com/somematerial路由到应用程序.如果我在我的应用中启用App Transport Security,则会阻止通过自定义网址方案进行路由,并收到以下消息:
App Transport Security已阻止明文HTTP(http://)资源加载,因为它不安全.可以通过应用程序的Info.plist文件配置临时例外.
但是,如果我禁用ATS,应用程序将按预期路由.我没有通过我的应用程序中的http访问任何链接,在我的路由中,我总是通过https获取数据.因此,我不知道为什么ATS会阻止此路由.你知道我是否必须提供一些关于我的网址方案的其他信息吗?
请参阅Info.plist中的我的ATS配置:
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoadsInWebContent</key>
<true/>
<key>NSExceptionDomains</key>
<dict>
<key>localhost</key>
<dict>
<key>NSIncludesSubdomains</key>
<true/>
<key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
<true/>
</dict>
</dict>
</dict>
Run Code Online (Sandbox Code Playgroud)
我还将我的自定义网址列入白名单:
<key>LSApplicationQueriesSchemes</key>
<array>
<string>myappscheme</string>
</array>
Run Code Online (Sandbox Code Playgroud) 我试图解释一个小型网络视频的URI中方案和协议之间的区别.
我想起来了的地方,我可以澄清,"不是所有的方案与协议通过查看分组的点文件:在RFC方案在这里.
在RFC文档中,它引用了我们对可以使用文件方案完成的操作的讨论.然后说:
有关可对文件执行的标准化操作的示例,请参阅POSIX文件和目录操作[POSIX].
如果协议是"规则系统或商定程序",它们对"标准化操作"意味着什么?他们是否也同意如何处理某些事情的程序?
我不能再进一步了,因为POSIX部分没有任何链接,但我真正想知道的是,如果我能在我的视频中说出来,而没有人对我大喊大叫:
"并非所有的方案都有一个协议!所以不是协议的几个不同的操作发生了." (但他们是什么?这句话是正确还是错误?)<-----
因为它听起来像我发生的那些其他操作(例如在文件:方案上)也可能是协议,因为它们是某些东西的标准.
或者有一个协议意味着只有一种商定的方式来做某事而且它不应该被允许发生的其他多个操作开放?
题:
最后,我对协议与其他方案操作的研究让我得出结论,说协议是不同的,因为它们是一个规则系统或商定的 通信程序或两个或多个实体之间的信息传递,计算机系统或工具.
虽然只是广泛而且说文件方案等方案可能会发生其他可能的行为.(我仍然不知道这些行为中的一些是否符合多个可能的协议,或者它们是否真的完全不同而且根本不是协议)
作为一个想要对协议的定义与标准操作更加确定的人,我希望我能得到另一个专家意见,说我的上述结论是正确的或错误的.
我一直在寻找一段时间通过文档来找到实现这一目标的方法,但尚未成功.基本的想法是,我有一个html,我通过Qt的webview加载.可以将相同的内容导出到单个html文件中.
该文件使用Bootstrap和jQuery等库.目前我通过CDN加载它们,这在网上很好用.但是,我的应用程序还需要脱机运行.所以我正在寻找一种方法来拦截Qt中的库加载并改为提供本地保存的文件.我已经尝试安装https QWebEngineUrlSchemeHandler,但似乎从来没有触发过requestStarted方法.
(PyQT example follows)
QWebEngineProfile.defaultProfile().installUrlSchemeHandler(b'https', self)
Run Code Online (Sandbox Code Playgroud)
如果我为该方案使用不同的文本并将其嵌入到它所使用的页面中,那么我的假设是它不起作用,因为Qt已经注册了它的默认处理程序.但是这种不同的方案在文件导出中会失败.
无论如何,回到核心问题; 有没有办法拦截库的加载,或仅在Qt内专门更改url方案?
进一步使用QWebEngineUrlRequestInterceptor,现在将https请求重定向到我自己的uri,它有一个uri处理程序.但是,请求永远不会通过它,因为:重定向位置'conapp://webresource/bootstrap.min.css'对于跨源请求有一个不允许的方案.如何将自己的conapp uri计划列入白名单?
我已经在所有内部应用程序上广泛使用自定义协议来打开任何类型的文档(CAD,CAM,PDF等),打开文件资源管理器并选择特定文件,并运行其他应用程序。
多年前,我定义了一个myprotocol协议,C:\Windows\System32\wscript.exe该协议通过传递VBScript的名称以及每个请求具有的参数来执行。传递给脚本的第一个参数描述动作的类型(OpenDocument,ShowFileInFileExplorer,ExportBOM等),下面的参数被传递给动作。
直到去年wscript.exe停止工作时,一切都运转良好(有关详细信息,请参见此处)。我将问题复制到来解决wscript2.exe。现在,创建副本是我们所有计算机的标准配置中的一个步骤,现在使用该副本是wscript2.exe我们自定义协议的正式配置。(我们的防病毒客户支持找不到与交互的任何内容wscript.exe)。
今天,在构建新计算机之后,我们发现:
wscript2.exe。如果单击自定义协议链接,然后单击浏览按钮并打开该文件夹,则只会看到一小部分.exe文件,其中包括wscript.exe,但不包括wscript2.exe(我不知道这个问题最近有多久,因为我不要亲自使用FireFox)。wscript.exe,但仍然无法正常工作(行为与我之前链接的上一篇文章中所述的相同)wscript2.exe,但现在总是要求您进行确认。根据本文的说法,这似乎是新方法,并且情况很快可能会再次发生变化。每次单击确认框对我的用户来说都是一个很大的禁忌。这会减慢许多工作流程,这些工作流程需要快速单击页面上的数百个链接,例如,查看在大型工程图中缩放到一个几何图形的CAD应用程序。去年,我已经解决了一个问题,现在我正在处理另一个问题,阅读该文章使我感到恐惧,并使我认为很快就会出现更多问题。
所以这是一个问题:除了使用自定义协议,还有其他选择吗?
我不在开发供公众消费的Web应用程序。我的自定义协议需要VBScript文件,脚本使用的应用程序以及大量的网络共享文件夹。它们仅在我们的内部网络中使用,并且使用它们的计算机是手动配置的。