Skip to content

Instantly share code, notes, and snippets.

@janodev
janodev / BaseConverter.swift
Created August 20, 2016 20:29
A base converter in Swift 3. For instance, BaseConverter.representNumber(number: 3405691582, inBase: 16) is "cafebabe"
import Foundation
public struct BaseConverter
{
static let alphabet = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" // 62 digits
static func representNumber(n: Int, asciiAlphabet: String) -> String
{
let base = asciiAlphabet.lengthOfBytes(using: String.Encoding.utf8)
if (n < base){
@janodev
janodev / handleNotifications.swift
Created August 16, 2016 12:59
Handle the notifications
@import UserNotifications;
extension NotificationManager: UNUserNotificationCenterDelegate
{
// Called because the user interacted with a notification. Actions may be dismiss, open, or choosing an action.
func userNotificationCenter(_ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse, withCompletionHandler completionHandler: () -> Void)
{
print(response)
}
@janodev
janodev / registerToken.swift
Created August 16, 2016 12:57
Register the token
func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data)
{
let token = deviceToken.description.components(separatedBy: CharacterSet(charactersIn: "<> ")).joined(separator: ""
dlog(token, .Info)
}
@janodev
janodev / requestAuthorization.swift
Created August 16, 2016 12:57
Request authorization
let center = UNUserNotificationCenter.current()
center.requestAuthorization([.sound, .alert, .badge]) { (granted, error) in
// ...
}
@janodev
janodev / handleTextResponse.swift
Created August 16, 2016 12:56
Handle a text response
class NotificationViewController: UIViewController, UINotificationContentExtension
{
override func canBecomeFirstResponder() -> Bool {
return true
}
override var inputAccessoryView: UIView {
get { return inputView }
}
@janodev
janodev / handleAction.swift
Created August 16, 2016 12:55
Handle the action
class NotificationViewController: UIViewController, UINotificationContentExtension
{
func didReceive(_ response: UNNotificationResponse,
completionHandler done: (UNNotificationContentExtensionResponseOption) -> Void)
{
server.postEventResponse(response.actionIdentifier)
{
if response.actionIdentifier == "accept"
{
eventResponse.text = "Going!"
@janodev
janodev / recoverAttachment.swift
Created August 16, 2016 12:53
Recover a notification attachment
import UIKit
import UserNotifications
import UserNotificationsUI
struct Attachments {
static let image = (identifier:"image", jsonElement:"imageURL")
}
class ContentViewController: UIViewController, UNNotificationContentExtension
{
@janodev
janodev / layoutContent.swift
Created August 16, 2016 12:53
Layout the content
override func viewDidLoad()
{
super.viewDidLoad()
let size = view.bounds.size
preferrredContentSize = CGSize(width: size.width, height: size.width / 2)
}
@janodev
janodev / contentExtension.plist
Created August 16, 2016 12:51
plist of a Notification Content Extension
NSExtension Dictionary
NSExtensionAttributes Dictionary
UNNotificationExtensionDefaultContent Number 0.5
UNNotificationExtensionDefaultContentHidden Bool YES
UNNotificationExtensionCategory String event-invite
NSExtensionMainStoryboard String MainInterface
NSExtensionPointIdentifier String com.apple.usernotifications.content-extensio
@janodev
janodev / createAttachment.swift
Created August 16, 2016 12:50
Create a notification attachment
import UserNotifications
class ServiceExtension: UNNotificationServiceExtension
{
struct Attachments {
static let image = (identifier:"image", jsonElement:"imageURL")
}
var contentHandler: ((UNNotificationContent) -> Void)?
var content: UNMutableNotificationContent?