Skip to content

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.

Copy link

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.

Copy link

JackBTheDev commented Jun 5, 2015

I believe this is the method you are looking for

@jlooireignacio

This comment has been minimized.

Copy link

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.

Copy link

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

@Gkiokan

This comment has been minimized.

Copy link

Gkiokan commented Oct 31, 2018

For iOS < 10 you can use this code.
Since iOS 10.0 this is deprecated.

        let notificationSetting = UIUserNotificationSettings(types: [UIUserNotificationType.badge,
                                                                        UIUserNotificationType.sound, UIUserNotificationType.alert], categories: nil)
        UIApplication.shared.registerUserNotificationSettings(notificationSetting);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.