Instantly share code, notes, and snippets.

Embed
What would you like to do?
[Swift] Push Notification
<?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 );
//
// 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 ) {
}
}
//
// 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 ) {
}
}
@herock1

This comment has been minimized.

Show comment
Hide comment
@herock1

herock1 May 21, 2015

Can you please explain where you have received json data that has sent by Server.

herock1 commented May 21, 2015

Can you please explain where you have received json data that has sent by Server.

@JackBTheDev

This comment has been minimized.

Show comment
Hide comment
@JackBTheDev

JackBTheDev Jun 5, 2015

I believe this is the method you are looking for

JackBTheDev commented Jun 5, 2015

I believe this is the method you are looking for

@jlooireignacio

This comment has been minimized.

Show comment
Hide comment
@jlooireignacio

jlooireignacio Sep 15, 2015

Where can i download the whole project ? as my referal, link please .Thank you

jlooireignacio commented Sep 15, 2015

Where can i download the whole project ? as my referal, link please .Thank you

@antonio081014

This comment has been minimized.

Show comment
Hide comment
@antonio081014

antonio081014 Dec 6, 2015

var types: UIUserNotificationType = UIUserNotificationType.Badge |
                   UIUserNotificationType.Alert |
                   UIUserNotificationType.Sound
var settings: UIUserNotificationSettings = UIUserNotificationSettings( forTypes: types, categories: nil )

        application.registerUserNotificationSettings( settings )

does not support anymore.
Use

let notificationSetting = UIUserNotificationSettings(forTypes: [UIUserNotificationType.Badge,
            UIUserNotificationType.Sound, UIUserNotificationType.Alert], categories: nil)
application .registerUserNotificationSettings(notificationSetting);

instead

antonio081014 commented Dec 6, 2015

var types: UIUserNotificationType = UIUserNotificationType.Badge |
                   UIUserNotificationType.Alert |
                   UIUserNotificationType.Sound
var settings: UIUserNotificationSettings = UIUserNotificationSettings( forTypes: types, categories: nil )

        application.registerUserNotificationSettings( settings )

does not support anymore.
Use

let notificationSetting = UIUserNotificationSettings(forTypes: [UIUserNotificationType.Badge,
            UIUserNotificationType.Sound, UIUserNotificationType.Alert], categories: nil)
application .registerUserNotificationSettings(notificationSetting);

instead

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment