{"id":13906317,"url":"https://github.com/googleads/google-media-framework-ios","last_synced_at":"2026-02-02T16:42:19.496Z","repository":{"id":56912888,"uuid":"14990934","full_name":"googleads/google-media-framework-ios","owner":"googleads","description":"The Google Media Framework (GMF) is a lightweight media player designed to make video playback and integration with the Google IMA SDK on iOS easier.","archived":false,"fork":false,"pushed_at":"2022-02-08T18:44:00.000Z","size":692,"stargazers_count":75,"open_issues_count":1,"forks_count":28,"subscribers_count":17,"default_branch":"main","last_synced_at":"2025-11-11T15:05:07.954Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Objective-C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/googleads.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2013-12-06T19:05:32.000Z","updated_at":"2025-01-20T12:56:51.000Z","dependencies_parsed_at":"2022-08-21T03:20:24.719Z","dependency_job_id":null,"html_url":"https://github.com/googleads/google-media-framework-ios","commit_stats":null,"previous_names":[],"tags_count":8,"template":false,"template_full_name":null,"purl":"pkg:github/googleads/google-media-framework-ios","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/googleads%2Fgoogle-media-framework-ios","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/googleads%2Fgoogle-media-framework-ios/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/googleads%2Fgoogle-media-framework-ios/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/googleads%2Fgoogle-media-framework-ios/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/googleads","download_url":"https://codeload.github.com/googleads/google-media-framework-ios/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/googleads%2Fgoogle-media-framework-ios/sbom","scorecard":{"id":438278,"data":{"date":"2025-08-11","repo":{"name":"github.com/googleads/google-media-framework-ios","commit":"efe9f2a88d3e751b0b7bd32fed7e7db363004689"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3.8,"checks":[{"name":"Code-Review","score":6,"reason":"Found 8/13 approved changesets -- score normalized to 6","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Pinned-Dependencies","score":-1,"reason":"no dependencies found","details":null,"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: Apache License 2.0: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'main'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 28 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-19T05:08:43.974Z","repository_id":56912888,"created_at":"2025-08-19T05:08:43.974Z","updated_at":"2025-08-19T05:08:43.974Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29015315,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-02T16:17:30.374Z","status":"ssl_error","status_checked_at":"2026-02-02T15:58:50.469Z","response_time":58,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-06T23:01:33.394Z","updated_at":"2026-02-02T16:42:19.468Z","avatar_url":"https://github.com/googleads.png","language":"Objective-C","funding_links":[],"categories":["HarmonyOS","Players \u0026 Clients"],"sub_categories":["Windows Manager","Mobile \u0026 Web Players"],"readme":"# Google Media Framework for iOS\n\n[![Build Status](https://travis-ci.org/googleads/google-media-framework-ios.png?branch=master)](https://travis-ci.org/googleads/google-media-framework-ios)\n\n## Introduction\nThe Google Media Framework (GMF) is a lightweight media player designed to make video playback and integration with the Google IMA SDK on iOS easier.\n\n![Google Media Framework iOS Demo](http://googleads.github.io/google-media-framework-ios/gmf_ios_portrait.png)\n\n## Features\n- A simple video player UI for video playback on iOS.\n- Easily integrate the Google IMA SDK to enable advertising on your video content.\n\n## Getting started\nThe easiest way to get started is by using [CocoaPods](http://cocoapods.org).\n\nCreate a new single view xcode project, then add the following line to your ```Podfile```:\n```\npod \"GoogleMediaFramework\", \"~\u003e 1.0\"\n```\nThen run\n```\n$ pod install\n```\nThen close your project in xcode and open the new xcworkspace that Cococapods just created:\n```\n$ open YourProjectName.xcworkspace\n```\nFind your new project's ```ViewController.m``` and add the following line at the top:\n```\n#import \u003cGoogleMediaFramework/GoogleMediaFramework.h\u003e\n```\nThen, add a ```viewDidAppear``` method:\n```\n- (void)viewDidAppear:(BOOL)animated {\n  [super viewDidAppear:animated];\n\n  // An example url for the video content.\n  NSString *videoURL = @\"http://devimages.apple.com/samplecode/adDemo/ad.m3u8\";\n\n  // Init the video player view controller.\n  GMFPlayerViewController *videoPlayerViewController = [[GMFPlayerViewController alloc] init];\n\n  // Tell the player to play our content url.\n  [videoPlayerViewController loadStreamWithURL:[NSURL URLWithString:videoURL]];\n\n  // Tell the video player to start playing.\n  [videoPlayerViewController play];\n\n  [self presentViewController:videoPlayerViewController animated:YES completion:nil];\n}\n```\nNow run your new app, and you should see the video player appear and start playing. (=Note: The close button will not work, as your application needs to know what to do when it is clicked. For a more in-depth example, see the demo app included with the framework.\n\nThe demo application shows a more advanced implementation using a UINavigationController to select from different video content and ad tags.\n\nTo try the demo app included with the Google Media Framework, clone the Google Media Framework Github repository, generate the xcworkspace file via ```pod install``` and open it.\n```\n$ git clone https://github.com/googleads/google-media-framework-ios.git GoogleMediaFramework\n$ cd GoogleMediaFramework/GoogleMediaFrameworkDemo\n$ pod install\n$ open GoogleMediaFrameworkDemo.xcworkspace\n```\n\nYou can now build the demo project and select a video to play.\n\nThe demo app includes the [Google Interactive Media Ads (IMA) SDK](https://developers.google.com/interactive-media-ads/docs/sdks/ios/v3/), which allows you to monetize your video content using [Doubleclick for Publishers](https://www.google.com/doubleclick/publishers/welcome/).\n\nIf you don't want to use CocoaPods, you should be able to integrate the framework by cloning the project and manually adding the classes and image resources to your project.\n\n## Where do I report issues?\nPlease report issues on the [issues page](../../issues).\n\n## Support\nIf you have questions about the framework, you can ask them at http://groups.google.com/d/forum/google-media-framework\n\n## How do I contribute?\nSee [CONTRIBUTING.md](./CONTRIBUTING.md) for details.\n\n## Requirements\n  - iOS 6.1+\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgoogleads%2Fgoogle-media-framework-ios","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgoogleads%2Fgoogle-media-framework-ios","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgoogleads%2Fgoogle-media-framework-ios/lists"}