Code Monkey home page Code Monkey logo

jw-showcase-appletv's Introduction

JW Player Logo

Plays everywhere, every time.

Live on over 2 million sites with 1.3 billion unique plays per month, JW Player is the solution for seamless video playback across browsers and media types. It empowers the developer to interact with video programmatically to create unique and awesome user experiences.

Disclaimer

This is the non-commercial version of JW Player. It does not contain the same features as the commercial-use player available from jwplayer.com. Commercial use and access to features requires a license. Learn more at https://www.jwplayer.com/pricing/. If you are a paid customer and want a player, please download it from the "Downloads" section of your JW Dashboard.

Official Documentation

A Simple Example

The example below will render a video player into the div with the player id, listens to an event, and makes a few calls using the API.

<!DOCTYPE html>
<html>
<head>
    <script src='LINK_TO_YOUR_PLAYER'></script>
    <script>jwplayer.key='YOUR_KEY';</script>
</head>
<body>
    <div id="player">Loading the player...</div>
    <script>
        // Setup the player
        const player = jwplayer('player').setup({
            file: 'LINK_TO_YOUR_FILE.mp4'
        });

        // Listen to an event
        player.on('pause', (event) => {
            alert('Why did my user pause their video instead of watching it?');
        });

        // Call the API
        const bumpIt = () => {
            const vol = player.getVolume();
            player.setVolume(vol + 10);
        }
        bumpIt();
    </script>
</body>
</html>

Contributing

We appreciate all contributions towards the player! Before submitting an issue or PR, please see our contributing docs here.

Building the Player

We use grunt and a few npm scripts to build the player, lint code, and run tests. Debug code is built to /bin-debug, while minified & uglified code is built to /bin-release. Code is built with webpack, linted with eslint, and tested with karma, mocha and chai.

Requirements:

  • Node.js with npm
  • Install global npm dependencies npm install -g eslint grunt-cli jsdoc karma-cli stylelint webpack webpack-cli

Steps:

  1. Fork the project, clone your fork, and set up the remotes:
# Clone your fork of the repo into the current directory
git clone https://github.com/<your-username>/jwplayer
# Navigate to the newly cloned directory
cd jwplayer
# Assign the original repo to a remote called "upstream"
git remote add upstream https://github.com/jwplayer/jwplayer
  1. Install the dependencies:
# Install dependencies
npm install -g eslint grunt-cli jsdoc karma-cli stylelint webpack webpack-cli
npm install
# Optionally, install webpack-dev-server
npm install -g webpack-dev-server
  1. Build the player:
# Build once
grunt
# Complete Watch - builds JS, lints, and tests on each change
grunt serve
# Quick JS Watch - build only. Requires webpack-dev-server to be installed globally
webpack-dev-server -w --env.debug --port 8888 --output-public-path /bin-debug/
# Open the test page from another terminal window
open http://localhost:8888/test/manual/
  1. Test your code:
# All browsers
grunt test
# Individual browsers - chrome, firefox, safari
grunt karma:{BROWSER} e.g. grunt karma:chrome
  1. Lint your code:
npm run lint
  1. Setup git pre-push hook This will add a pre-push script to the project's .git/hooks folder that will lint and run unit tests on the branch before any push.
grunt hooks

Framework Integration

The JW team officially maintains and supports framework integration for React.

Framework Link
React https://github.com/jwplayer/jwplayer-react

If you have a library which you believe is good enough to meet the needs of other developers using a certain framework, please open a pull request modifying the above table.

Software License

The use of this library is governed by a Creative Commons license. You can use, modify, copy, and distribute this edition as long as it’s for non-commercial use, you provide attribution, and share under a similar license. http://www.jwplayer.com/license/

jw-showcase-appletv's People

Contributors

daniel-berger avatar johnluther avatar monibons avatar pablos1 avatar rikheijdens avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

jw-showcase-appletv's Issues

Where to find api

Hi just wondering where exactly i can find jwplayer api structure? wanting to build some custom app.

p2p streaming & changing views

Hi,

Is there anyway to have the same screen as the selected video show at the bottom of the main screen rather than the playlist to select the video

Hope that makes sense.

HomeScreen Playlist Not Updating

Hi Guys,

Thanks for the awesome work!

However, I have found that the AppleTV will not update automatically when users go back to the home screen. Unlike mobile devices, the tvos app will not exit without users' request. Is there any ways for me to automatically update the playlist every time user goes back to the home screen?

Do you guys have any tips for me to achieve this?

Thanks!

TV App doesn't load

I cloned the app and followed all the instructions, changed the API key on the folder and the info.plist, entered our own playlists in the config.json file and replaced the TVBasedURL with our localhost URL (I uncommented the commented line and viceversa). When I open the project it asks me to update to either Swift 3 or 2.3. I updated to 2.3. When I run, the simulator loads and then the screen turns completely black and nothing else happens. There are a LOT of lines in the Output window, the last of which read:

2016-11-19 10:23:50.522111 jwplayer-for-tv[2815:147265] [] nw_resolver_cancel_on_queue 0x608000112e10
2016-11-19 10:23:50.522391 jwplayer-for-tv[2815:147265] [] -[NWConcrete_tcp_connection dealloc] 9
2016-11-19 10:23:50.523030 jwplayer-for-tv[2815:147265] [] nw_endpoint_handler_cancel [10 localhost:80 ready resolver (satisfied)]
2016-11-19 10:23:50.523248 jwplayer-for-tv[2815:147265] [] nw_endpoint_handler_cancel [10.1 ::1.80 ready socket-flow (satisfied)]
2016-11-19 10:23:50.523688 jwplayer-for-tv[2815:147265] [] nw_endpoint_flow_protocol_disconnected [10.1 ::1.80 cancelled socket-flow (null)] Output protocol disconnected
2016-11-19 10:23:50.524033 jwplayer-for-tv[2815:147265] [] nw_endpoint_handler_cancel [10.2 127.0.0.1:80 initial path (null)]
2016-11-19 10:23:50.524341 jwplayer-for-tv[2815:147265] [] nw_resolver_cancel_on_queue 0x60000010bc70
2016-11-19 10:23:50.524662 jwplayer-for-tv[2815:147265] [] -[NWConcrete_tcp_connection dealloc] 10
2016-11-19 10:23:50.524981 jwplayer-for-tv[2815:147265] [] nw_socket_handle_socket_event Event mask: 0x6
2016-11-19 10:23:50.525262 jwplayer-for-tv[2815:147265] [] nw_socket_handle_socket_event Socket received READ_CLOSE event
2016-11-19 10:23:50.525762 jwplayer-for-tv[2815:147265] [] nw_socket_handle_socket_event Socket received WRITE_CLOSE event
2016-11-19 10:23:50.526221 jwplayer-for-tv[2815:147265] [] nw_endpoint_flow_protocol_disconnected [10.1 ::1.80 cancelled socket-flow (null)] Output protocol disconnected

Are there any known issues with the TV App and the latest version of XCode?

Video/Audio Sync after hours of playback

The app works great, however after streaming JW Player hosted videos for several hours, we are having issues with the video freezing and the audio continuing and not synching back up. This only occurs after a significant amount of time. For example, users are expecting to keep the videos streaming for about 8 hours or more. Is anyone else having a similar issue?

Updating Config File

Hi guys,

Running into unexpected behaviors when updating my config file. We're part of the beta ads, and it looks like our ad tags aren't sending as they were before -- it was perfect before the update. Also, I've made some changes to the playlists that render within the app, and we're getting some unexpected things there.

Hero images in product details template too small

@pablos1 and I discussed this but just recording it here to track.

tvOS seems to ignore "width" properties applied to hero images in the Product Details template (or possibly max width is constrained/dictated by the parent container), thus our video details screens contain small hero images, which looks odd. (See screenshot for example.)

screen shot 2015-12-02 at 11 21 12 am

Captions implementation

Can you please support captions (CEA-608 or CEA-708 closed captions or WebVTT subtitles)?

Unversioned resources

New versioned deployments of the app change the relative path structure between application.js and the /resources/ folder. We should update Application.swift to reflect that change.

Changing config.json

I have noticed an issue running app in the simulator from time to time when I make changes to the config.json file. The specific changes I have made are to the images and background color. I got the background color change to work one time when I changed it to #333333. The image changes have worked a few times but I noticed this morning when I made the change it will not run in the simulator again. Any idea why this would happen?

Video quality

I've been testing the showcase app and I've noticed that even though our videos are encoded for different qualities, including 1080, videos loaded into the app (when watched in the simulator) always appear in a low quality. Is there a setting that can be modified? Or does this depend on bandwidth? I'm watching the same video in a web player (using JW) and the quality is HiRes.
Thanks.

Add Apache notice to all source file headers

Don't need to put this in the TVML files, just code. Here is the text:

/**
* Copyright 2015 Longtail Ad Solutions Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either 
* express or implied. See the License for the specific language 
* governing permissions and limitations under the License.
**/

#Notice #SYSTEM

I keep getting this when I hit run with a black screen on the simulator. Any thoughts?

2017-03-16 07:43:12.905 jwplayer-for-tv[4019:371242] #T:[Main] #Notice #SYSTEM : Template element: <IKViewElement: 0x7ff698d696c0>
2017-03-16 07:43:12.907 jwplayer-for-tv[4019:371242] #T:[Main] #Notice #SYSTEM : Template controller: <UIViewController: 0x7ff698d6c800>

App loads but nothing happens

So I have built this for tvOS 9.0 and the simulator/test device loads the app. I see the icon and background all good, but when the app opens no videos are shown, nothing. It just displays the navigation on top with
"videos" and "search". I made sure the appDelegate has the URL of where my config is hosted and I can access it in the browser.

Dynamic Playlist

Anyone else have issue with dynamic playlist. getting this error:

jwplayer-for-tv[8831:1172330] ITML : Unsupported tag [div]

Anyway to get dynamic playlist to work?

/* Begin XCConfigurationList section / 6E566F771BE3BC5B00CCB4DC / Build configuration list for PBXProject "jwplayer-for-tv" / = { isa = XCConfigurationList; buildConfigurations = ( 6E566F891BE3BC5B00CCB4DC / Debug /, 6E566F8A1BE3BC5B00CCB4DC / Release /, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; 6E566F8B1BE3BC5B00CCB4DC / Build configuration list for PBXNativeTarget "jwplayer-for-tv" / = { isa = XCConfigurationList; buildConfigurations = ( 6E566F8C1BE3BC5B00CCB4DC / Debug /, 6E566F8D1BE3BC5B00CCB4DC / Release /, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; / End XCConfigurationList section / }; rootObject = 6E566F741BE3BC5B00CCB4DC / Project object */; }

// !$UTF8$!
{
archiveVersion = 1;
classes = {
};
objectVersion = 46;
objects = {

/* Begin PBXBuildFile section /
6E566F801BE3BC5B00CCB4DC /
AppDelegate.swift in Sources / = {isa = PBXBuildFile; fileRef = 6E566F7F1BE3BC5B00CCB4DC / AppDelegate.swift /; };
6E566F871BE3BC5B00CCB4DC /
Assets.xcassets in Resources / = {isa = PBXBuildFile; fileRef = 6E566F861BE3BC5B00CCB4DC / Assets.xcassets /; };
/
End PBXBuildFile section */

/* Begin PBXFileReference section /
6E566F7C1BE3BC5B00CCB4DC /
jwplayer-for-tv.app / = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "jwplayer-for-tv.app"; sourceTree = BUILT_PRODUCTS_DIR; };
6E566F7F1BE3BC5B00CCB4DC /
AppDelegate.swift / = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; };
6E566F861BE3BC5B00CCB4DC /
Assets.xcassets / = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; };
6E566F881BE3BC5B00CCB4DC /
Info.plist / = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
/
End PBXFileReference section */

/* Begin PBXFrameworksBuildPhase section /
6E566F791BE3BC5B00CCB4DC /
Frameworks / = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
/
End PBXFrameworksBuildPhase section */

/* Begin PBXGroup section /
6E566F731BE3BC5B00CCB4DC = {
isa = PBXGroup;
children = (
6E566F7E1BE3BC5B00CCB4DC /
jwplayer-for-tv /,
6E566F7D1BE3BC5B00CCB4DC /
Products /,
);
sourceTree = "";
};
6E566F7D1BE3BC5B00CCB4DC /
Products / = {
isa = PBXGroup;
children = (
6E566F7C1BE3BC5B00CCB4DC /
jwplayer-for-tv.app /,
);
name = Products;
sourceTree = "";
};
6E566F7E1BE3BC5B00CCB4DC /
jwplayer-for-tv / = {
isa = PBXGroup;
children = (
6E566F7F1BE3BC5B00CCB4DC /
AppDelegate.swift /,
6E566F861BE3BC5B00CCB4DC /
Assets.xcassets /,
6E566F881BE3BC5B00CCB4DC /
Info.plist /,
);
path = "jwplayer-for-tv";
sourceTree = "";
};
/
End PBXGroup section */

/* Begin PBXNativeTarget section /
6E566F7B1BE3BC5B00CCB4DC /
jwplayer-for-tv / = {
isa = PBXNativeTarget;
buildConfigurationList = 6E566F8B1BE3BC5B00CCB4DC /
Build configuration list for PBXNativeTarget "jwplayer-for-tv" /;
buildPhases = (
6E566F781BE3BC5B00CCB4DC /
Sources /,
6E566F791BE3BC5B00CCB4DC /
Frameworks /,
6E566F7A1BE3BC5B00CCB4DC /
Resources /,
);
buildRules = (
);
dependencies = (
);
name = "jwplayer-for-tv";
productName = "jwplayer-for-tv";
productReference = 6E566F7C1BE3BC5B00CCB4DC /
jwplayer-for-tv.app /;
productType = "com.apple.product-type.application";
};
/
End PBXNativeTarget section */

/* Begin PBXProject section /
6E566F741BE3BC5B00CCB4DC /
Project object / = {
isa = PBXProject;
attributes = {
LastSwiftUpdateCheck = 0710;
LastUpgradeCheck = 0710;
ORGANIZATIONNAME = "JW Player";
TargetAttributes = {
6E566F7B1BE3BC5B00CCB4DC = {
CreatedOnToolsVersion = 7.1;
};
};
};
buildConfigurationList = 6E566F771BE3BC5B00CCB4DC /
Build configuration list for PBXProject "jwplayer-for-tv" /;
compatibilityVersion = "Xcode 3.2";
developmentRegion = English;
hasScannedForEncodings = 0;
knownRegions = (
en,
Base,
);
mainGroup = 6E566F731BE3BC5B00CCB4DC;
productRefGroup = 6E566F7D1BE3BC5B00CCB4DC /
Products /;
projectDirPath = "";
projectRoot = "";
targets = (
6E566F7B1BE3BC5B00CCB4DC /
jwplayer-for-tv /,
);
};
/
End PBXProject section */

/* Begin PBXResourcesBuildPhase section /
6E566F7A1BE3BC5B00CCB4DC /
Resources / = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
6E566F871BE3BC5B00CCB4DC /
Assets.xcassets in Resources /,
);
runOnlyForDeploymentPostprocessing = 0;
};
/
End PBXResourcesBuildPhase section */

/* Begin PBXSourcesBuildPhase section /
6E566F781BE3BC5B00CCB4DC /
Sources / = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
6E566F801BE3BC5B00CCB4DC /
AppDelegate.swift in Sources /,
);
runOnlyForDeploymentPostprocessing = 0;
};
/
End PBXSourcesBuildPhase section */

/* Begin XCBuildConfiguration section /
6E566F891BE3BC5B00CCB4DC /
Debug / = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
COPY_PHASE_STRIP = NO;
DEBUG_INFORMATION_FORMAT = dwarf;
ENABLE_STRICT_OBJC_MSGSEND = YES;
ENABLE_TESTABILITY = YES;
GCC_C_LANGUAGE_STANDARD = gnu99;
GCC_DYNAMIC_NO_PIC = NO;
GCC_NO_COMMON_BLOCKS = YES;
GCC_OPTIMIZATION_LEVEL = 0;
GCC_PREPROCESSOR_DEFINITIONS = (
"DEBUG=1",
"$(inherited)",
);
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
GCC_WARN_UNDECLARED_SELECTOR = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
MTL_ENABLE_DEBUG_INFO = YES;
ONLY_ACTIVE_ARCH = YES;
SDKROOT = appletvos;
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
TARGETED_DEVICE_FAMILY = 3;
TVOS_DEPLOYMENT_TARGET = 9.0;
};
name = Debug;
};
6E566F8A1BE3BC5B00CCB4DC /
Release / = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
COPY_PHASE_STRIP = NO;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
ENABLE_NS_ASSERTIONS = NO;
ENABLE_STRICT_OBJC_MSGSEND = YES;
GCC_C_LANGUAGE_STANDARD = gnu99;
GCC_NO_COMMON_BLOCKS = YES;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
GCC_WARN_UNDECLARED_SELECTOR = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
MTL_ENABLE_DEBUG_INFO = NO;
SDKROOT = appletvos;
TARGETED_DEVICE_FAMILY = 3;
TVOS_DEPLOYMENT_TARGET = 9.0;
VALIDATE_PRODUCT = YES;
};
name = Release;
};
6E566F8C1BE3BC5B00CCB4DC /
Debug / = {
isa = XCBuildConfiguration;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = "App Icon & Top Shelf Image";
ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage;
INFOPLIST_FILE = "jwplayer-for-tv/Info.plist";
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
PRODUCT_BUNDLE_IDENTIFIER = "com.jwplayer.appletv-app";
PRODUCT_NAME = "jwplayer-for-tv";
TVOS_DEPLOYMENT_TARGET = 9.0;
};
name = Debug;
};
6E566F8D1BE3BC5B00CCB4DC /
Release / = {
isa = XCBuildConfiguration;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = "App Icon & Top Shelf Image";
ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage;
INFOPLIST_FILE = "jwplayer-for-tv/Info.plist";
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
PRODUCT_BUNDLE_IDENTIFIER = "com.jwplayer.appletv-app";
PRODUCT_NAME = "jwplayer-for-tv";
TVOS_DEPLOYMENT_TARGET = 9.0;
};
name = Release;
};
/
End XCBuildConfiguration section */

/* Begin XCConfigurationList section /
6E566F771BE3BC5B00CCB4DC /
Build configuration list for PBXProject "jwplayer-for-tv" / = {
isa = XCConfigurationList;
buildConfigurations = (
6E566F891BE3BC5B00CCB4DC /
Debug /,
6E566F8A1BE3BC5B00CCB4DC /
Release /,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
6E566F8B1BE3BC5B00CCB4DC /
Build configuration list for PBXNativeTarget "jwplayer-for-tv" / = {
isa = XCConfigurationList;
buildConfigurations = (
6E566F8C1BE3BC5B00CCB4DC /
Debug /,
6E566F8D1BE3BC5B00CCB4DC /
Release /,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
/
End XCConfigurationList section /
};
rootObject = 6E566F741BE3BC5B00CCB4DC /
Project object */;
}
image

Login Screen

Has anyone added a login screen to their app to use membership from a website? or have maybe examples i could look at (obviously not from your production environment) or even just somewhere to start looking.

VMAP Not working

Hi,

We've joined the beta for the app with Ads. Our app looks great -- our branding, images, etc. are all loaded, our video playback is delivering dynamically, and we've already been approved for release by Apple.

In order to release, based on our licensing, we have to include commercial breaks throughout playback -- we're looking to do so using the beta's VMAP feature. Our VMAP has been properly constructed (we've crossed checked by delivering ads to our Roku channel using the same VMAP), and our tag(s) deliver perfectly when injected into the app as a pre-roll. Are we missing a module? We're looking to get these VMAPs to deliver so we can release to the public.

incorrrect TVConfigURL

TVConfigURL is set to "https://tvos.jwpsrv.com/resources/configs" where as it should point to relative base url which would be
static let TVConfigURL = "(AppDelegate.TVBaseURL)/resources/configs"

NOTE: Existing url would only work with demo api key, once you swtich it to your accoutn, you will get error following error on App launch:
"negative or zero item sizes are not supported in the flow layout"

Issue with the URL

The app works when i push it to the apple device but then i'm having issues with URL for hosting my files. I tried using google drop box and says token issue. Then i try to use local web server and i get error, can't remember the error but the only website works is the demo. The other question i have why is that i have to use a web server to host this file, or is there another way or place to put this on jw player or apple at the end?

Feature Request: tvOS Authentication

We would love to deploy our videos behind a paywall, as we have content that we would like to sell to subscribed users. It would be great if the tvOS app could have the option to ask for an auth code whenever trying to play a video, similar to how NSScreencast does it (along with many other tvOS apps). Is this on the roadmap at all for future development? Thanks!

Adding EPG

Hello!,

I love it! And got everything to work :) Thank you for the good manual.

I know want to place a EPG (TV Guide) to a video (live stream). So when you choose a video and it shows you the description and button to play video I would like to show the EPG of that video/stream. Is this somehow easy to do with JW player? Have you got any tips or tricks how to get this done?

Thank you!

Feed into JW Player

Hello guys!

I'm still looking for a way to insert a json feed so jw player will extract all those video's en content and show it in the app.

Like:

[{"id":"805ca389-3729-11e6-9a28-5254005f012e","version":"14","slug":"lezentv-amandakluveld-a-20120611","name":"Amanda Kluveld","synopsisshort":"Amanda Kluveld: Pijn - interview","synopsislong":"Historica Amanda Kluveld schreef een indrukwekkende en zeer toegankelijke studie over de culturele, de maatschappelijke en de occulte betekenis van pijn door de eeuwen heen en deed bovendien een aantal persoonlijke ontdekkingen. \u201cPijn heeft iets moois zolang die beheersbaar is.\u201d","url":"http:\/\/lezentv.nl\/articles\/136","genre":"Overige, Serie","duration":"00:32:45","duration_seconds":"1965","starttime":"2016-06-24 04:02:32","endtime":"2016-06-24 04:35:17","date":"2016-06-23"}

So basically it got all the information it needs to show the right video, but I just don't understand how to get this to work in the app?

I know I need to change the Json file but not really know how. I was hoping someone can help me and tell me what I exactly need to do to get this to work?

(Is it also possible to insert this feed in my JW Player account like a playlist and it extract all the videos from it? I can't find any information about this either)

Thanks for helping!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.