Skip to content

Instantly share code, notes, and snippets.

@shingohry
shingohry / UsePocketAuthenticationAPIExample.swift
Last active March 7, 2022 15:25
Use Pocket Authentication API in iOS App
import UIKit
import AuthenticationServices
import Combine
class ViewController: UIViewController {
// you must add a URL scheme to your Info.plist
let callbackURLScheme = "pocketsample"
let callbackURL = "pocketsample:authorizationFinished"
@shingohry
shingohry / ViewController.swift
Created June 11, 2019 17:13
NetworkingWithCombine
import UIKit
import Combine
/*
# References
- [ra1028/SwiftUI-Combine: This is an example project of SwiftUI and Combine using GitHub API.](https://github.com/ra1028/SwiftUI-Combine)
- [marty-suzuki/GitHubSearchWithSwiftUI: SwiftUI and Combine based GitHubSearch example.](https://github.com/marty-suzuki/GitHubSearchWithSwiftUI)
- [DataTaskPublisherを作ってみた](https://gist.github.com/yamoridon/16c1cc70ac46e50def4ca6695ceff772)
- [【iOS】Combineフレームワークまとめ(2019/6/9時点) - Qiita](https://qiita.com/shiz/items/5efac86479db77a52ccc)
*/
@shingohry
shingohry / ResultActivity.kt
Last active January 7, 2019 07:42
ResultActivity
package com.example.myfirstapp
import android.support.v7.app.AppCompatActivity
import android.os.Bundle
import android.widget.TextView
class ResultActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
@shingohry
shingohry / MainActivity.kt
Last active January 7, 2019 07:38
MainActivity
package com.example.myfirstapp
import android.content.Intent
import android.support.v7.app.AppCompatActivity
import android.os.Bundle
import android.widget.Button
import android.widget.EditText
class MainActivity : AppCompatActivity() {
@shingohry
shingohry / Snapshotter.swift
Last active September 9, 2020 05:56
create Snapshot of entire SpreadsheetView (SpreadsheetView: https://github.com/kishikawakatsumi/SpreadsheetView)
class Snapshotter {
static func createSnapshot(spreadsheetView: SpreadsheetView) -> UIImage? {
guard let rootView = spreadsheetView.subviews[0] as? UIScrollView,
let overlayView = spreadsheetView.subviews[1] as? UIScrollView else { return nil }
let bounds = spreadsheetView.bounds
let contentSize = overlayView.contentSize
let contentOffset = rootView.contentOffset
let numberOfColumns = Int(contentSize.width / bounds.width)
@shingohry
shingohry / app.js
Last active June 18, 2018 14:59
Send iOS 12 grouped remote notifications with node-apn
// References:
// https://developer.apple.com/videos/play/wwdc2018/711/
// https://github.com/node-apn/node-apn/blob/master/doc/notification.markdown#convenience-setters
// https://eladnava.com/send-push-notifications-to-ios-devices-using-xcode-8-and-swift-3/
var apn = require('apn');
// Set up apn with the APNs Auth Key
var apnProvider = new apn.Provider({
token: {
@shingohry
shingohry / with-declarative-html.html
Last active April 29, 2017 14:18
LivePhotosKit JS Samples
<!DOCTYPE html>
<html>
<head>
<title>With Declarative HTML</title>
<meta charset="utf-8">
<!-- [1]LivePhotosKit JSのスクリプトを埋め込み -->
<script src="https://cdn.apple-livephotoskit.com/lpk/1/livephotoskit.js"></script>
</head>

Fabric: Copyright 2016 Twitter, Inc. All Rights Reserved. Use of this software is subject to the terms and conditions of the Fabric Software and Services Agreement located at https://fabric.io/terms. Crashlytics Kit: Copyright 2016 Crashlytics, Inc. All Rights Reserved. Use of this software is subject to the terms and conditions of the Crashlytics Terms of Service located at http://try.crashlytics.com/terms/terms-of-service.pdf and the Crashlytics Privacy Policy located at http://try.crashlytics.com/terms/privacy-policy.pdf. OSS: http://get.fabric.io/terms/opensource.txt

@shingohry
shingohry / gist:c11002561f188780d55c
Last active October 8, 2016 06:37
use AVAudioFile
// Open the file
NSError *error = nil;
AVAudioFile *audioFile = [[AVAudioFile alloc]
initForReading: fileURL
commonFormat: AVAudioPCMFormatFloat32
interleaved: NO
error: &error];
// Fetch and print basic info
NSLog(@“File URL: %@\n”, fileURL.absoluteString);
@shingohry
shingohry / gist:8d7cb98b6323598ab2a6
Created September 4, 2014 04:44
limit textView text length
- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
{
// すでに入力されているテキストを取得、今回編集されたテキストをマージ
NSMutableString *textViewText = [textView.text mutableCopy];
[textViewText replaceCharactersInRange:range withString:text];
// 結果が文字数をオーバーしていないならYES,オーバーしている場合はNO
if ([textViewText length] <= self.maxTextLength) {
// 最大文字数以下
return YES;