jjzjj

ios - 我在哪里可以找到 "documentary evidence"以获得 App Store Approval 以下载 PUBLIC Facebook 视频?

coder 2023-09-25 原文

我为 iOS 开发了一个应用程序,允许您从 Facebook 下载公共(public)视频。该应用程序不允许下载受版权保护的视频。 该应用程序的目的是使用 WhatsApp 的 API 通过 WhatsApp 共享视频。

我向 Apple 提交了申请,但审核小组拒绝了它并报告了以下说明:

8.6 - Apps that include the ability to download music or video content from third party sources (e.g. YouTube, SoundCloud, Vimeo, etc) without explicit authorization from those sources will be rejected

8.6 Details

We found that your app allows users to download music or video content without authorization from the relevant third-party sources.

Next Steps

Please provide documentary evidence of your rights to allow music or video content download from third-party sources. If you do not have the requested permissions, please remove the music or video download functionality from your app.

那么,哪里可以找到“证明文件”呢? 我认为下载公开且不受版权保护的视频是可以接受的,该应用程序不会下载任何受版权保护的视频。如何向 Apple 采购必要的文件?

这是承载我的应用程序的简单程序:

  1. 通过 Facebook 登录:因此应用程序具有访问 token 。
  2. 检查链接:检查链接是否指向 Facebook 上的视频。
  3. 下载视频:使用 Graph Api 应用程序获取视频的源链接。如果视频未公开或受版权保护,应用程序将禁止下载并返回错误。我使用的代码是:

    -(void)requestToFbWithGraphAPI{
    
    isDownloanding = YES;
    internetReach   = [Reachability reachabilityForInternetConnection];
    wifiReach       = [Reachability reachabilityForLocalWiFi];
    if(([self check:internetReach])||([self check:wifiReach])){
    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
    
        NSString    *urlString;
        NSString    *token;
        NSURL       *url;
    
        token       = [[FBSDKAccessToken currentAccessToken] tokenString];
        urlString   = [NSString stringWithFormat:@"https://graph.facebook.com/v2.3/%@?access_token=%@", videoId, token];
        NSString *encodedURLString = [urlString stringByAddingPercentEscapesUsingEncoding:NSASCIIStringEncoding];
        url             = [NSURL URLWithString:encodedURLString];
        NSData* data    = [NSData dataWithContentsOfURL:url];
        if(data != nil){
            [self performSelectorOnMainThread:@selector(handleFbResponse:)
                                   withObject:data waitUntilDone:YES];
            isLastAPrivacyViolation = NO;
        }else{
            dispatch_async(dispatch_get_main_queue(), ^{
                statusLabel.text = NSLocalizedString(@"The privacy of the video set by the\nauthor or the copyright does not allow downloading the video.",nil);
                statusLabel.numberOfLines = 2;
                isLastAPrivacyViolation = YES;
                [UIView animateWithDuration: 1.2
                                      delay: 0
                                    options: (UIViewAnimationOptionCurveLinear | UIViewAnimationOptionAllowUserInteraction)
                                 animations:^{
                                     statusLabel.backgroundColor = [UIColor colorWithRed:231.0/255.0 green:76.0/255.0 blue:60.0/255.0 alpha:1.0];
    
                                     statusLabel.frame = CGRectMake(0, -40, SCREEN_WIDTH, 40*2);
                                 }
                                 completion:^(BOOL finished) {
                                     [NSTimer scheduledTimerWithTimeInterval: 2.0 target: self
                                                                    selector: @selector(resetFromPrivacyNotAmmitted) userInfo: nil repeats: NO];
                                 }
                 ];
            });
            isDownloanding = NO;
        }
    });
    }else{
        isDownloanding = NO;
    }
    }
    
    
    -(void)handleFbResponse:(NSData *)responseDataFb {
    
     NSDictionary* json = [NSJSONSerialization
                      JSONObjectWithData:responseDataFb
                      options:kNilOptions error:nil];
    
     urlStringSourceVideo    = [json objectForKey:@"source"];
     descriptionVideo        = [json objectForKey:@"description"];
     urlStringPictureVideo   = [json objectForKey:@"picture"];
    
     NSDictionary *fromDict  = [json objectForKey:@"from"];
     nameVideo               = [fromDict objectForKey:@"name"];
    
     if (urlStringSourceVideo) {
    
    [self downloadVideo];
    }
    
    }
    
    -(void)downloadVideo{
    
    
     statusLabel.text = NSLocalizedString(@"Download Started", nil);
    
        [self showCancelRequestButton];
    
    // Create the request.
     NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:urlStringSourceVideo]];
     conn = [[NSURLConnection alloc] initWithRequest:request delegate:self];
    
    }
    

最佳答案

8.6 部分声明:“未经这些来源的明确授权将被拒绝”,这意味着您将需要获得明确授权。

根据美国现行法律,受版权保护的 Material 不需要版权声明。因此,需要明确许可才能确保没有版权和/或允许使用。

书面证据将是所有者使用该 Material 的书面许可。是否获得此许可取决于用户(您)。或者网站上或与 Material 相关的信息可能会说明允许的用途。

公开可用性并不意味着没有版权或可以在未经所有者许可的情况下使用该 Material 。

关于ios - 我在哪里可以找到 "documentary evidence"以获得 App Store Approval 以下载 PUBLIC Facebook 视频?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29626461/

有关ios - 我在哪里可以找到 "documentary evidence"以获得 App Store Approval 以下载 PUBLIC Facebook 视频?的更多相关文章

  1. ruby - 为什么我可以在 Ruby 中使用 Object#send 访问私有(private)/ protected 方法? - 2

    类classAprivatedeffooputs:fooendpublicdefbarputs:barendprivatedefzimputs:zimendprotecteddefdibputs:dibendendA的实例a=A.new测试a.foorescueputs:faila.barrescueputs:faila.zimrescueputs:faila.dibrescueputs:faila.gazrescueputs:fail测试输出failbarfailfailfail.发送测试[:foo,:bar,:zim,:dib,:gaz].each{|m|a.send(m)resc

  2. ruby-on-rails - rails : "missing partial" when calling 'render' in RSpec test - 2

    我正在尝试测试是否存在表单。我是Rails新手。我的new.html.erb_spec.rb文件的内容是:require'spec_helper'describe"messages/new.html.erb"doit"shouldrendertheform"dorender'/messages/new.html.erb'reponse.shouldhave_form_putting_to(@message)with_submit_buttonendendView本身,new.html.erb,有代码:当我运行rspec时,它失败了:1)messages/new.html.erbshou

  3. ruby-on-rails - 由于 "wkhtmltopdf",PDFKIT 显然无法正常工作 - 2

    我在从html页面生成PDF时遇到问题。我正在使用PDFkit。在安装它的过程中,我注意到我需要wkhtmltopdf。所以我也安装了它。我做了PDFkit的文档所说的一切......现在我在尝试加载PDF时遇到了这个错误。这里是错误:commandfailed:"/usr/local/bin/wkhtmltopdf""--margin-right""0.75in""--page-size""Letter""--margin-top""0.75in""--margin-bottom""0.75in""--encoding""UTF-8""--margin-left""0.75in""-

  4. ruby - 使用 Vim Rails,您可以创建一个新的迁移文件并一次性打开它吗? - 2

    使用带有Rails插件的vim,您可以创建一个迁移文件,然后一次性打开该文件吗?textmate也可以这样吗? 最佳答案 你可以使用rails.vim然后做类似的事情::Rgeneratemigratonadd_foo_to_bar插件将打开迁移生成的文件,这正是您想要的。我不能代表textmate。 关于ruby-使用VimRails,您可以创建一个新的迁移文件并一次性打开它吗?,我们在StackOverflow上找到一个类似的问题: https://sta

  5. ruby - 我可以使用 Ruby 从 CSV 中删除列吗? - 2

    查看Ruby的CSV库的文档,我非常确定这是可能且简单的。我只需要使用Ruby删除CSV文件的前三列,但我没有成功运行它。 最佳答案 csv_table=CSV.read(file_path_in,:headers=>true)csv_table.delete("header_name")csv_table.to_csv#=>ThenewCSVinstringformat检查CSV::Table文档:http://ruby-doc.org/stdlib-1.9.2/libdoc/csv/rdoc/CSV/Table.html

  6. ruby - 检查 "command"的输出应该包含 NilClass 的意外崩溃 - 2

    为了将Cucumber用于命令行脚本,我按照提供的说明安装了arubagem。它在我的Gemfile中,我可以验证是否安装了正确的版本并且我已经包含了require'aruba/cucumber'在'features/env.rb'中为了确保它能正常工作,我写了以下场景:@announceScenario:Testingcucumber/arubaGivenablankslateThentheoutputfrom"ls-la"shouldcontain"drw"假设事情应该失败。它确实失败了,但失败的原因是错误的:@announceScenario:Testingcucumber/ar

  7. ruby - 我可以使用 aws-sdk-ruby 在 AWS S3 上使用事务性文件删除/上传吗? - 2

    我发现ActiveRecord::Base.transaction在复杂方法中非常有效。我想知道是否可以在如下事务中从AWSS3上传/删除文件:S3Object.transactiondo#writeintofiles#raiseanexceptionend引发异常后,每个操作都应在S3上回滚。S3Object这可能吗?? 最佳答案 虽然S3API具有批量删除功能,但它不支持事务,因为每个删除操作都可以独立于其他操作成功/失败。该API不提供任何批量上传功能(通过PUT或POST),因此每个上传操作都是通过一个独立的API调用完成的

  8. ruby-on-rails - 迷你测试错误 : "NameError: uninitialized constant" - 2

    我遵循MichaelHartl的“RubyonRails教程:学习Web开发”,并创建了检查用户名和电子邮件长度有效性的测试(名称最多50个字符,电子邮件最多255个字符)。test/helpers/application_helper_test.rb的内容是:require'test_helper'classApplicationHelperTest在运行bundleexecraketest时,所有测试都通过了,但我看到以下消息在最后被标记为错误:ERROR["test_full_title_helper",ApplicationHelperTest,1.820016791]test

  9. ruby-on-rails - 相关表上的范围为 "WHERE ... LIKE" - 2

    我正在尝试从Postgresql表(table1)中获取数据,该表由另一个相关表(property)的字段(table2)过滤。在纯SQL中,我会这样编写查询:SELECT*FROMtable1JOINtable2USING(table2_id)WHEREtable2.propertyLIKE'query%'这工作正常:scope:my_scope,->(query){includes(:table2).where("table2.property":query)}但我真正需要的是使用LIKE运算符进行过滤,而不是严格相等。然而,这是行不通的:scope:my_scope,->(que

  10. 使用 ACL 调用 upload_file 时出现 Ruby S3 "Access Denied"错误 - 2

    我正在尝试编写一个将文件上传到AWS并公开该文件的Ruby脚本。我做了以下事情:s3=Aws::S3::Resource.new(credentials:Aws::Credentials.new(KEY,SECRET),region:'us-west-2')obj=s3.bucket('stg-db').object('key')obj.upload_file(filename)这似乎工作正常,除了该文件不是公开可用的,而且我无法获得它的公共(public)URL。但是当我登录到S3时,我可以正常查看我的文件。为了使其公开可用,我将最后一行更改为obj.upload_file(file

随机推荐