{"action":"closed","number":106,"pull_request":{"url":"https://api.github.com/repos/cinder/Cinder/pulls/106","id":415708,"html_url":"https://github.com/cinder/Cinder/pull/106","diff_url":"https://github.com/cinder/Cinder/pull/106.diff","patch_url":"https://github.com/cinder/Cinder/pull/106.patch","issue_url":"https://api.github.com/repos/cinder/Cinder/issues/106","number":106,"state":"closed","locked":false,"title":"Add OpenUrlEvent to AppCocoaTouch","user":{"login":"RandomEtc","id":39635,"avatar_url":"https://avatars.githubusercontent.com/u/39635?v=3","gravatar_id":"","url":"https://api.github.com/users/RandomEtc","html_url":"https://github.com/RandomEtc","followers_url":"https://api.github.com/users/RandomEtc/followers","following_url":"https://api.github.com/users/RandomEtc/following{/other_user}","gists_url":"https://api.github.com/users/RandomEtc/gists{/gist_id}","starred_url":"https://api.github.com/users/RandomEtc/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/RandomEtc/subscriptions","organizations_url":"https://api.github.com/users/RandomEtc/orgs","repos_url":"https://api.github.com/users/RandomEtc/repos","events_url":"https://api.github.com/users/RandomEtc/events{/privacy}","received_events_url":"https://api.github.com/users/RandomEtc/received_events","type":"User","site_admin":false},"body":"Adds an `OpenUrlEvent` and a `urlOpened` method to `AppCocoaTouch` to allow Cinder apps to respond to requests from other iOS apps. This allows a Cinder app to be opened as a result of a web link, for example. We're using this to get back to our app after completing an OAuth request in mobile safari.\r\n\r\nI have also adjusted AppCocoaTouch's delegate to use `application:didFinishLaunchingWithOptions` which is the recommended place to complete your app setup on iOS these days.\r\n\r\nThe intention is that `setup` will run before the first `urlOpened`. Once your app is running, or in the background, it might receive more than one `urlOpened` call or event. The OpenUrlEvent is a class rather than a string in case we want to add more values to it later. I only needed the URL, but there are other notifications that can wake up an app.\r\n\r\nTo receive a URL notification, your app's plist must declare the url-scheme supported by your app. You can edit this in Xcode but the resulting values are something like:\r\n\r\n```xml\r\n\t<key>CFBundleURLTypes</key>\r\n\t<array>\r\n\t\t<dict>\r\n\t\t\t<key>CFBundleURLSchemes</key>\r\n\t\t\t<array>\r\n\t\t\t\t<string>my-fancy-scheme</string>\r\n\t\t\t</array>\r\n\t\t</dict>\r\n\t</array>\r\n```\r\n\r\nYour app then receives notifications whenever someone opens a `my-fancy-scheme://something` URL.\r\n\r\nThis Stack Overflow post provided some guidance on real world implementation, but honestly it seemed pretty straight forward: http://stackoverflow.com/questions/3612460/lauching-app-with-url-via-uiapplicationdelegates-handleopenurl-working-under\r\n\r\nThis is not an urgent request but I wanted to clean it up and get it out there. Thoughts welcome!","created_at":"2011-10-19T16:44:53Z","updated_at":"2015-06-04T04:24:06Z","closed_at":"2015-06-04T04:24:06Z","merged_at":null,"merge_commit_sha":"17a03f4589cc2aa9506bbb815181e4cd10064919","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/cinder/Cinder/pulls/106/commits","review_comments_url":"https://api.github.com/repos/cinder/Cinder/pulls/106/comments","review_comment_url":"https://api.github.com/repos/cinder/Cinder/pulls/comments{/number}","comments_url":"https://api.github.com/repos/cinder/Cinder/issues/106/comments","statuses_url":"https://api.github.com/repos/cinder/Cinder/statuses/3b0e74884bff48a1b665242f0c871132c532f319","head":{"label":"bloomtime:open-url","ref":"open-url","sha":"3b0e74884bff48a1b665242f0c871132c532f319","user":{"login":"bloomtime","id":329997,"avatar_url":"https://avatars.githubusercontent.com/u/329997?v=3","gravatar_id":"","url":"https://api.github.com/users/bloomtime","html_url":"https://github.com/bloomtime","followers_url":"https://api.github.com/users/bloomtime/followers","following_url":"https://api.github.com/users/bloomtime/following{/other_user}","gists_url":"https://api.github.com/users/bloomtime/gists{/gist_id}","starred_url":"https://api.github.com/users/bloomtime/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bloomtime/subscriptions","organizations_url":"https://api.github.com/users/bloomtime/orgs","repos_url":"https://api.github.com/users/bloomtime/repos","events_url":"https://api.github.com/users/bloomtime/events{/privacy}","received_events_url":"https://api.github.com/users/bloomtime/received_events","type":"Organization","site_admin":false},"repo":{"id":1513465,"name":"Cinder","full_name":"bloomtime/Cinder","owner":{"login":"bloomtime","id":329997,"avatar_url":"https://avatars.githubusercontent.com/u/329997?v=3","gravatar_id":"","url":"https://api.github.com/users/bloomtime","html_url":"https://github.com/bloomtime","followers_url":"https://api.github.com/users/bloomtime/followers","following_url":"https://api.github.com/users/bloomtime/following{/other_user}","gists_url":"https://api.github.com/users/bloomtime/gists{/gist_id}","starred_url":"https://api.github.com/users/bloomtime/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bloomtime/subscriptions","organizations_url":"https://api.github.com/users/bloomtime/orgs","repos_url":"https://api.github.com/users/bloomtime/repos","events_url":"https://api.github.com/users/bloomtime/events{/privacy}","received_events_url":"https://api.github.com/users/bloomtime/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/bloomtime/Cinder","description":"Cinder is a community-developed, free and open source library for professional-quality creative coding in C++.","fork":true,"url":"https://api.github.com/repos/bloomtime/Cinder","forks_url":"https://api.github.com/repos/bloomtime/Cinder/forks","keys_url":"https://api.github.com/repos/bloomtime/Cinder/keys{/key_id}","collaborators_url":"https://api.github.com/repos/bloomtime/Cinder/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/bloomtime/Cinder/teams","hooks_url":"https://api.github.com/repos/bloomtime/Cinder/hooks","issue_events_url":"https://api.github.com/repos/bloomtime/Cinder/issues/events{/number}","events_url":"https://api.github.com/repos/bloomtime/Cinder/events","assignees_url":"https://api.github.com/repos/bloomtime/Cinder/assignees{/user}","branches_url":"https://api.github.com/repos/bloomtime/Cinder/branches{/branch}","tags_url":"https://api.github.com/repos/bloomtime/Cinder/tags","blobs_url":"https://api.github.com/repos/bloomtime/Cinder/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/bloomtime/Cinder/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/bloomtime/Cinder/git/refs{/sha}","trees_url":"https://api.github.com/repos/bloomtime/Cinder/git/trees{/sha}","statuses_url":"https://api.github.com/repos/bloomtime/Cinder/statuses/{sha}","languages_url":"https://api.github.com/repos/bloomtime/Cinder/languages","stargazers_url":"https://api.github.com/repos/bloomtime/Cinder/stargazers","contributors_url":"https://api.github.com/repos/bloomtime/Cinder/contributors","subscribers_url":"https://api.github.com/repos/bloomtime/Cinder/subscribers","subscription_url":"https://api.github.com/repos/bloomtime/Cinder/subscription","commits_url":"https://api.github.com/repos/bloomtime/Cinder/commits{/sha}","git_commits_url":"https://api.github.com/repos/bloomtime/Cinder/git/commits{/sha}","comments_url":"https://api.github.com/repos/bloomtime/Cinder/comments{/number}","issue_comment_url":"https://api.github.com/repos/bloomtime/Cinder/issues/comments{/number}","contents_url":"https://api.github.com/repos/bloomtime/Cinder/contents/{+path}","compare_url":"https://api.github.com/repos/bloomtime/Cinder/compare/{base}...{head}","merges_url":"https://api.github.com/repos/bloomtime/Cinder/merges","archive_url":"https://api.github.com/repos/bloomtime/Cinder/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/bloomtime/Cinder/downloads","issues_url":"https://api.github.com/repos/bloomtime/Cinder/issues{/number}","pulls_url":"https://api.github.com/repos/bloomtime/Cinder/pulls{/number}","milestones_url":"https://api.github.com/repos/bloomtime/Cinder/milestones{/number}","notifications_url":"https://api.github.com/repos/bloomtime/Cinder/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/bloomtime/Cinder/labels{/name}","releases_url":"https://api.github.com/repos/bloomtime/Cinder/releases{/id}","created_at":"2011-03-22T21:42:36Z","updated_at":"2013-04-12T22:41:13Z","pushed_at":"2012-03-19T04:31:08Z","git_url":"git://github.com/bloomtime/Cinder.git","ssh_url":"git@github.com:bloomtime/Cinder.git","clone_url":"https://github.com/bloomtime/Cinder.git","svn_url":"https://github.com/bloomtime/Cinder","homepage":"http://libcinder.org","size":108940,"stargazers_count":4,"watchers_count":4,"language":"C++","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":3,"mirror_url":null,"open_issues_count":0,"forks":3,"open_issues":0,"watchers":4,"default_branch":"master"}},"base":{"label":"cinder:master","ref":"master","sha":"dd229559e9c47cb3b752b254d5ec8224ca294456","user":{"login":"cinder","id":154586,"avatar_url":"https://avatars.githubusercontent.com/u/154586?v=3","gravatar_id":"","url":"https://api.github.com/users/cinder","html_url":"https://github.com/cinder","followers_url":"https://api.github.com/users/cinder/followers","following_url":"https://api.github.com/users/cinder/following{/other_user}","gists_url":"https://api.github.com/users/cinder/gists{/gist_id}","starred_url":"https://api.github.com/users/cinder/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/cinder/subscriptions","organizations_url":"https://api.github.com/users/cinder/orgs","repos_url":"https://api.github.com/users/cinder/repos","events_url":"https://api.github.com/users/cinder/events{/privacy}","received_events_url":"https://api.github.com/users/cinder/received_events","type":"User","site_admin":false},"repo":{"id":622127,"name":"Cinder","full_name":"cinder/Cinder","owner":{"login":"cinder","id":154586,"avatar_url":"https://avatars.githubusercontent.com/u/154586?v=3","gravatar_id":"","url":"https://api.github.com/users/cinder","html_url":"https://github.com/cinder","followers_url":"https://api.github.com/users/cinder/followers","following_url":"https://api.github.com/users/cinder/following{/other_user}","gists_url":"https://api.github.com/users/cinder/gists{/gist_id}","starred_url":"https://api.github.com/users/cinder/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/cinder/subscriptions","organizations_url":"https://api.github.com/users/cinder/orgs","repos_url":"https://api.github.com/users/cinder/repos","events_url":"https://api.github.com/users/cinder/events{/privacy}","received_events_url":"https://api.github.com/users/cinder/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/cinder/Cinder","description":"Cinder is a community-developed, free and open source library for professional-quality creative coding in C++.","fork":false,"url":"https://api.github.com/repos/cinder/Cinder","forks_url":"https://api.github.com/repos/cinder/Cinder/forks","keys_url":"https://api.github.com/repos/cinder/Cinder/keys{/key_id}","collaborators_url":"https://api.github.com/repos/cinder/Cinder/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/cinder/Cinder/teams","hooks_url":"https://api.github.com/repos/cinder/Cinder/hooks","issue_events_url":"https://api.github.com/repos/cinder/Cinder/issues/events{/number}","events_url":"https://api.github.com/repos/cinder/Cinder/events","assignees_url":"https://api.github.com/repos/cinder/Cinder/assignees{/user}","branches_url":"https://api.github.com/repos/cinder/Cinder/branches{/branch}","tags_url":"https://api.github.com/repos/cinder/Cinder/tags","blobs_url":"https://api.github.com/repos/cinder/Cinder/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/cinder/Cinder/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/cinder/Cinder/git/refs{/sha}","trees_url":"https://api.github.com/repos/cinder/Cinder/git/trees{/sha}","statuses_url":"https://api.github.com/repos/cinder/Cinder/statuses/{sha}","languages_url":"https://api.github.com/repos/cinder/Cinder/languages","stargazers_url":"https://api.github.com/repos/cinder/Cinder/stargazers","contributors_url":"https://api.github.com/repos/cinder/Cinder/contributors","subscribers_url":"https://api.github.com/repos/cinder/Cinder/subscribers","subscription_url":"https://api.github.com/repos/cinder/Cinder/subscription","commits_url":"https://api.github.com/repos/cinder/Cinder/commits{/sha}","git_commits_url":"https://api.github.com/repos/cinder/Cinder/git/commits{/sha}","comments_url":"https://api.github.com/repos/cinder/Cinder/comments{/number}","issue_comment_url":"https://api.github.com/repos/cinder/Cinder/issues/comments{/number}","contents_url":"https://api.github.com/repos/cinder/Cinder/contents/{+path}","compare_url":"https://api.github.com/repos/cinder/Cinder/compare/{base}...{head}","merges_url":"https://api.github.com/repos/cinder/Cinder/merges","archive_url":"https://api.github.com/repos/cinder/Cinder/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/cinder/Cinder/downloads","issues_url":"https://api.github.com/repos/cinder/Cinder/issues{/number}","pulls_url":"https://api.github.com/repos/cinder/Cinder/pulls{/number}","milestones_url":"https://api.github.com/repos/cinder/Cinder/milestones{/number}","notifications_url":"https://api.github.com/repos/cinder/Cinder/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/cinder/Cinder/labels{/name}","releases_url":"https://api.github.com/repos/cinder/Cinder/releases{/id}","created_at":"2010-04-21T19:03:10Z","updated_at":"2015-05-29T12:36:43Z","pushed_at":"2015-06-04T03:58:51Z","git_url":"git://github.com/cinder/Cinder.git","ssh_url":"git@github.com:cinder/Cinder.git","clone_url":"https://github.com/cinder/Cinder.git","svn_url":"https://github.com/cinder/Cinder","homepage":"http://libcinder.org","size":339378,"stargazers_count":2011,"watchers_count":2011,"language":"C","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":493,"mirror_url":null,"open_issues_count":137,"forks":493,"open_issues":137,"watchers":2011,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/cinder/Cinder/pulls/106"},"html":{"href":"https://github.com/cinder/Cinder/pull/106"},"issue":{"href":"https://api.github.com/repos/cinder/Cinder/issues/106"},"comments":{"href":"https://api.github.com/repos/cinder/Cinder/issues/106/comments"},"review_comments":{"href":"https://api.github.com/repos/cinder/Cinder/pulls/106/comments"},"review_comment":{"href":"https://api.github.com/repos/cinder/Cinder/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/cinder/Cinder/pulls/106/commits"},"statuses":{"href":"https://api.github.com/repos/cinder/Cinder/statuses/3b0e74884bff48a1b665242f0c871132c532f319"}},"merged":false,"mergeable":false,"mergeable_state":"dirty","merged_by":null,"comments":1,"review_comments":0,"commits":7,"additions":85,"deletions":3,"changed_files":3}}