반응형
swift 로 작성된 push notification 샘플입니다. 꼭 테스트 해 볼 예정임.
sawapi 라는 분이 작성해주셨네요.
테스트 서비스는 php 로 작성되어 있습니다.
https://gist.github.com/sawapi/a7cee65e4ad95578044d
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
$deviceToken = '************'; | |
// 送信する文字列 | |
$alert = 'Push test.'; | |
// バッジ | |
$badge = 1; | |
$body = array(); | |
$body['aps'] = array( 'alert' => $alert ); | |
$body['aps']['badge'] = $badge; | |
// SSL証明書 | |
$cert = '********.pem'; | |
$url = 'ssl://gateway.sandbox.push.apple.com:2195'; // 開発用 | |
//$url = 'ssl://gateway.push.apple.com:2195'; // 本番用 | |
$context = stream_context_create(); | |
stream_context_set_option( $context, 'ssl', 'local_cert', $cert ); | |
$fp = stream_socket_client( $url, $err, $errstr, 60, STREAM_CLIENT_CONNECT, $context ); | |
if( !$fp ) { | |
echo 'Failed to connect.' . PHP_EOL; | |
exit( 1 ); | |
} | |
$payload = json_encode( $body ); | |
$message = chr( 0 ) . pack( 'n', 32 ) . pack( 'H*', $deviceToken ) . pack( 'n', strlen($payload ) ) . $payload; | |
print 'send message:' . $payload . PHP_EOL; | |
fwrite( $fp, $message ); | |
fclose( $fp ); |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// | |
// AppDelegate.swift | |
// pushtest | |
// | |
// Created by sawapi on 2014/06/08. | |
// Copyright (c) 2014年 sawapi. All rights reserved. | |
// | |
// iOS8用 | |
import UIKit | |
@UIApplicationMain | |
class AppDelegate: UIResponder, UIApplicationDelegate { | |
var window: UIWindow? | |
func application( application: UIApplication, didFinishLaunchingWithOptions launchOptions: NSDictionary? ) -> Bool { | |
// Push通知を許可する | |
var types: UIUserNotificationType = UIUserNotificationType.Badge | | |
UIUserNotificationType.Alert | | |
UIUserNotificationType.Sound | |
var settings: UIUserNotificationSettings = UIUserNotificationSettings( forTypes: types, categories: nil ) | |
application.registerUserNotificationSettings( settings ) | |
application.registerForRemoteNotifications() | |
return true | |
} | |
// デバイストークンを取得する | |
func application( application: UIApplication!, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: NSData! ) { | |
// <>と" "(空白)を取る | |
var characterSet: NSCharacterSet = NSCharacterSet( charactersInString: "<>" ) | |
var deviceTokenString: String = ( deviceToken.description as NSString ) | |
.stringByTrimmingCharactersInSet( characterSet ) | |
.stringByReplacingOccurrencesOfString( " ", withString: "" ) as String | |
println( deviceTokenString ) | |
} | |
// デバイストークンの取得に失敗した場合 | |
func application( application: UIApplication!, didFailToRegisterForRemoteNotificationsWithError error: NSError! ) { | |
println( error.localizedDescription ) | |
} | |
func applicationWillResignActive( application: UIApplication ) { | |
} | |
func applicationDidEnterBackground( application: UIApplication ) { | |
} | |
func applicationWillEnterForeground( application: UIApplication ) { | |
} | |
func applicationDidBecomeActive( application: UIApplication ) { | |
} | |
func applicationWillTerminate( application: UIApplication ) { | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// | |
// AppDelegate.swift | |
// pushtest | |
// | |
// Created by sawapi on 2014/06/08. | |
// Copyright (c) 2014年 sawapi. All rights reserved. | |
// | |
// iOS7以下 | |
import UIKit | |
@UIApplicationMain | |
class AppDelegate: UIResponder, UIApplicationDelegate { | |
var window: UIWindow? | |
func application( application: UIApplication, didFinishLaunchingWithOptions launchOptions: NSDictionary? ) -> Bool { | |
application.registerForRemoteNotificationTypes( UIRemoteNotificationType.Badge | | |
UIRemoteNotificationType.Sound | | |
UIRemoteNotificationType.Alert ) | |
return true | |
} | |
// デバイストークンを取得する | |
func application( application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: NSData ) { | |
// <>と" "(空白)を取る | |
var characterSet: NSCharacterSet = NSCharacterSet( charactersInString: "<>" ) | |
var deviceTokenString: String = ( deviceToken.description as NSString ) | |
.stringByTrimmingCharactersInSet( characterSet ) | |
.stringByReplacingOccurrencesOfString( " ", withString: "" ) as String | |
println( deviceTokenString ) | |
} | |
func applicationWillResignActive( application: UIApplication ) { | |
} | |
func applicationDidEnterBackground( application: UIApplication ) { | |
} | |
func applicationWillEnterForeground( application: UIApplication ) { | |
} | |
func applicationDidBecomeActive( application: UIApplication ) { | |
} | |
func applicationWillTerminate( application: UIApplication ) { | |
} | |
} |

반응형
'초짜 IT보이 서바이벌 스토리 > iOS - swift' 카테고리의 다른 글
[swift] code log, day 4 (0) | 2017.09.26 |
---|---|
[swift] code log, day 3 (0) | 2017.09.25 |
[swift] code log, day 2 (0) | 2017.09.24 |
[swift] code log, day 1 (0) | 2017.09.22 |
[swift] #SWIFT #4 언어 가이드 (0) | 2017.09.22 |